Разница между "git push -f" и "удаление удаленной ветки и повторное нажатие"
Когда я нашел ошибки wrong в удаленной ветке, я всегда удаляю это, сквош локально и снова нажимаю. Потому что я слышал, что "git push -f" был опасным. Однако я заметил, что результат нажатия показывает, что после git fetch есть что-то вроде ниже.
new BRANCH_NAME "(force)"
Мой рабочий процесс удаляет и толкает снова правильно? Что между образом и "push -f" отличается?
Ответы
Ответ 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
Нет, удаление удаленной ветки сначала не сделает ее более безопасной или что-то еще.
Причина принудительного толчка опасна из-за причины рабочего процесса, а не по техническим причинам. Если кто-то вытащил вашу ошибочную ветку, то вы принудительно нажмете правильный набор изменений на ветке, что может привести к хаосу в их истории и изменениям, которые они сделали на вершине ветки, потому что их тяги больше не будут ускорены вперед (если они не исправят их ошибочная ветвь с силовым ударом или если они изменяют свои изменения), что может означать, что они снова могут снова ввести ошибочные изменения. В команде с одним коммиттером это обычно не будет проблемой, с большими проектами, с множеством коммиттеров и множеством наблюдателей, тогда вероятность проблемы намного больше, потому что это может быть не один или два человека, которые 'скачал ошибочную ветвь.