Подтвердить что ты не робот

Разница между "git push -f" и "удаление удаленной ветки и повторное нажатие"

Когда я нашел ошибки wrong в удаленной ветке, я всегда удаляю это, сквош локально и снова нажимаю. Потому что я слышал, что "git push -f" был опасным. Однако я заметил, что результат нажатия показывает, что после git fetch есть что-то вроде ниже.

new BRANCH_NAME "(force)"

Мой рабочий процесс удаляет и толкает снова правильно? Что между образом и "push -f" отличается?

4b9b3361

Ответ 1

Функционально удаление и повторное нажатие не менее опасно, чем git push -f.

Однако удаление и повторное нажатие на самом деле хуже, чем git -f push по очень определенной причине:

По крайней мере, с git -f push замена является атомной.

Хотя это не очень важно, когда вы работаете соло.

  • Когда вы используете git -f push, вам сообщается, какая именно замена в появившемся сообщении: X...Y branch -> branch (forced update). Оттуда вы можете убедиться, что X действительно означает, что нужно сдуть.
  • Когда вы выполняете git push origin :branch && git push origin branch, вы не можете сказать, что вы удалили, если вы не совсем единственный человек, который может нажать на branch.

Ответ 2

Нет, удаление удаленной ветки сначала не сделает ее более безопасной или что-то еще.

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