Как я могу обнаружить, что в коммит, который был помещен, были внесены поправки, а затем снова выдвинут - PullRequest
0 голосов
/ 30 мая 2018

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

Если я извлечу из этого пульта, как я узнаю, что что-то подобное произошло?Что случилось с двумя одинаковыми коммитами с разными хешами?

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Чтобы повторно нажать измененную фиксацию, вы должны указать опцию -f.Это означает изменение истории (вы говорите «этот коммит, который я уже выдвинул - я хочу, чтобы он был удален в прошлом»).

Это ломает вещи для тех, кто потянул за это время.Их следующее нажатие или толчок приведет к конфликтам и необходимости слияния - так что git скажет им.

Другими словами, git push -f разрешено:

  • , если выединственный разработчик
  • или если вы делаете это очень быстро после того, как поняли ошибку.
0 голосов
/ 30 мая 2018

Вы спрашиваете "что произойдет, если я потяну".Ничего, потому что вы будете синхронизированы, учитывая, что вы силой подтолкнули переписанную историю.Проблема будет в том, что несколько человек используют один и тот же удаленный репозиторий.

Скажем, вы изменяете, перебазируете или иным образом переписываете последний коммит.По сути, это удаляет самый последний коммит и записывает новый поверх предыдущего.Теперь вы отправляете это в удаленный репозиторий, и он будет отклонен, потому что ваш самый новый коммит не имеет отношения к последнему коммиту, о котором знает удаленный.

Так что вам придется принудительно пересылать, перезаписывая удаленныйответвление.

Теперь, если другой разработчик извлечет данные с этого пульта, у них возникнут проблемы: у них все еще есть тот старый коммит, который вы удалили, и их локальное хранилище не может соответствовать вашему.репо на любое дерево в своем репо.

См. Git pull после принудительного обновления , как решить эту проблему.

Так что если вы действительно хотите переписать уже отправленную историю, вам необходимо тщательно согласовать это с другими пользователямиэтот удаленный репозиторий.

Итак, чтобы ответить на ваш вопрос, как вы обнаружите принудительный коммит: вы не сможете вытащить.

0 голосов
/ 30 мая 2018

Если я вытащу из этого пульта, как я могу знать, что что-то подобное произошло? Как вы уже заметили, хеши будут отличаться, если вы уже извлекли указанный коммит.Возможно, вы не поймете, что это тот же самый коммит, если тоже изменилось сообщение о коммите.

В чем проблема с двумя одинаковыми коммитами с разными хешами? Скорее всего, вы будете вызывать конфликты для себя и кого-либо еще.работа над репо.

Подробнее см. https://git -scm.com / book / en / v2 / Git-Tools-Rewriting-History .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...