Последствия коммита в будущем

Я случайно зафиксировал и отправил изменение на пульт, в то время как дата моего устройства была установлена ​​​​на несколько дней в будущем (т. Е. Дата установлена ​​​​на 23-е вместо 21-го).

Я сослался на это, которое решит мою проблему, но посоветовал не выполнять его из-за силового толчка.

Итак, мой вопрос заключается в том, что сохранение неправильной даты и времени фиксации негативно повлияет на репозиторий Git (локальный и удаленный). Я использую «Git Lab» в качестве поставщика удаленного репозитория.

Вообще говоря, нет. Некоторые плохо написанные инструменты, предполагающие строго хронологический порядок, могут запутаться, но в Git все, что имеет значение, — это ссылки на коммиты parent. Тем не менее, git в любом случае был разработан для хронологически переупорядоченных коммитов — вот как вы rebase.

Dai 21.12.2020 05:40

@Dai, насколько я понимаю, вы говорите, что это не проблема, пока не выполняется rebase

Randika Perera 21.12.2020 05:48

Нет, я говорю, что это совсем не проблема, потому что rebase в git — очень распространенная операция.

Dai 21.12.2020 05:51

Хорошо, спасибо за разъяснение.

Randika Perera 21.12.2020 05:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
4
346
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

но посоветовал не выполнять его из-за силового толчка.

Любая перебазировка потребует принудительного нажатия для публикации перебазированной ветки.

Но это проблема только в том случае, если это делается в общедоступной ветке, над которой работают несколько соавторов.

Если это ваша собственная рабочая/тематическая ветка, вы можете перебазировать/форсировать нажатие столько раз, сколько захотите.
На самом деле это делается перед запросом на включение , чтобы обеспечить легкое слияние сопровождающим (или сопровождающий может инициировать перебазирование самостоятельно).

Ответ принят как подходящий

Итак, мой вопрос: будут ли сохранены неправильные дата и время фиксации отрицательно повлиять на репозиторий Git (локальный и удаленный). Я использую «Git Lab» в качестве провайдер удаленного репозитория.

Ответ: "это зависит". С точки зрения git это не так: дата записывается как метаданные, а порядок фиксации предоставляется на основе отношений родитель/потомок. Пожалуйста, смотрите этот ответ для дальнейшего изучения.

Однако, если вы используете CI-скрипты или внимательно следите за фактической историей репозитория, запись неправильных метаданных — это плохо в широком смысле. Это можно исправить.

Кстати, вы можете делать много чего с метаданными, например, помимо прочего, создавать коммиты в прошлом.

Совершение

Окончательное создание объекта коммита Git обычно выполняется с помощью git-commit-tree, который использует эти переменные среды в качестве своего первичный источник информации, возвращаясь к значениям конфигурации только если их нет.

GIT_AUTHOR_NAME — удобочитаемое имя в поле «автор».

GIT_AUTHOR_EMAIL — адрес электронной почты для поля «автор».

GIT_AUTHOR_DATE — временная метка, используемая для поля «автор».

GIT_COMMITTER_NAME задает человеческое имя для поля «committer».

GIT_COMMITTER_EMAIL — адрес электронной почты для поля «коммиттер».

GIT_COMMITTER_DATE используется для временной метки в «коммиттере». поле.

EMAIL — это резервный адрес электронной почты на случай, если user.email значение конфигурации не задано. Если это не установлено, Git возвращается к имя системного пользователя и хоста. источник

Это еще одна очень хорошая ссылка для понимания внутренностей git:

Давайте немного рассмотрим хэши этих объектов. Скажем, я написал строку git is awesome! и создал из нее большой двоичный объект. Ты сделал то же самое в вашей системе. Будет ли у нас такой же хэш?

Ответ  — Да. Поскольку большие двоичные объекты состоят из одних и тех же данных, они имеют одинаковые значения SHA-1.

Что, если я сделаю дерево, которое ссылается на каплю git is awesome!, и дал ему определенное имя и метаданные, и вы сделали то же самое на ваша система. Будет ли у нас такой же хэш?

Опять же, да. Поскольку объекты деревьев одинаковы, они будут иметь тот же хэш.

Что, если я создам фиксацию этого дерева с сообщением фиксации Hello, и вы сделали то же самое в своей системе. Будет ли у нас такой же хэш?

В этом случае ответ  — Нет. Несмотря на то, что наши объекты фиксации ссылаются к одному и тому же дереву, у них разные детали коммита — время, коммиттер и т. д. источник

Другие вопросы по теме