Когда будет `git pull --rebase` заставьте меня беспокоиться?
Я понимаю, что когда я использую git pull --rebase
, git будет переписывать историю и перемещать мои локальные коммиты, чтобы произойти после всех коммитов в ветке, которую я только что вытащил.
Я не понимаю, как это будет плохо. Люди говорят о том, чтобы попасть в неприятности с помощью git pull --rebase
, где вы можете получить ветку, от которой другие люди не могут вытащить. Но я не понимаю, как это возможно, поскольку все, что вы делаете, - это переигрывать вашу локальную, но еще не открытую информацию, на вершине ветки, из которой вы вытащили. Итак, в чем проблема?
Ответы
Ответ 1
Это только проблема, если вы только опубликовали (нажали) некоторые из ваших коммитов, потому что им было бы сложнее объединиться с другими репозиториями, которые уже совершили эти коммиты. Поскольку их SHA1 изменились, Git попытается воспроизвести их снова в этих репозиториях.
Если вы еще не нажали какой-либо из этих коммитов, любая перебаза должна быть безопасной.
Итак, проблема здесь: уверены ли вы, что все локальные коммиты, которые вы перегружаете, по-прежнему на самом деле... локальные?
И вы уверены в этом? git pull --rebase
'после' git pull --rebase
'?
Если вы работаете в "частном филиале" (ветке, которую вы никогда не проталкивали, но только слияние или переадресация в публичном ветки, то, что вы будете нажимать), тогда вы можете переустановить этот частный филиал в любое время, когда вы хотите.
В конце концов, все зависит от рабочего процесса слияния, который вы выбрали для установки.
Ответ 2
Зафиксировать ветку. От себя. Объединитесь к другой ветке (скажем, вы поддерживаете две базовые линии, ветвь патча и ветку новой разработки). Реализуйте другие коммиты, которые были перенесены на ветку сервера, которую вы отслеживаете. pull --rebase. Внезапно вы переделали каждый из коммитов против нового хеша - и уничтожили слияние.
Ответ 3
Если никто не вытащил вас, и вы не подтолкнули свои коммиты (до перезагрузки) нигде, тогда вы теоретически в порядке. Тем не менее, Git предназначен для эффективного слияния, и вы можете найти там меньше работы в целом, если вы вытаскиваете и объединяете, а не вытягиваете и перебазируете.
Ответ 4
Помните, что Git - это система управления версиями распределенная. Людям не нужно тянуть из центрального репозитория, к которому вы нажимаете - в определенных рабочих процессах они могут вытаскивать свои изменения непосредственно от вас. В таких случаях переписывание вашей истории может, безусловно, вызвать проблемы, о которых вы говорите