Когда будет `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 - это система управления версиями распределенная. Людям не нужно тянуть из центрального репозитория, к которому вы нажимаете - в определенных рабочих процессах они могут вытаскивать свои изменения непосредственно от вас. В таких случаях переписывание вашей истории может, безусловно, вызвать проблемы, о которых вы говорите