2015-05-28 3 views
1

Я посмотрел на более посты на мерзавец Rebase вызывая ветвь утечки, но хотели бы получить материалы от вас, что лучше использовать: мерзавец перебазироваться против мерзавца сливаться в следующем сценарииGit перебазироваться вызывает филиальные отвлечения

Рассматривайте У меня есть Главный филиал и филиал-А

Ветвь-А - это не только локальная ветка, но и удаленная ветка.

Workflow:

git co branch-A 
git pull 
Make some changes to branch-A 
git add 
git commit 
git push 

Теперь еще изменения произошли мастер

git co master 
git pull 
git co branch-A 
git rebase master 

Теперь у меня есть куча конфликтов, мерзавец просит меня разрешить конфликты, добавлять и применять мерзавец перебазироваться --continue Я разрешаю конфликты

git add 
git rebase --continue 

Теперь я получаю сообщение о том, что ваша ветка и происхождение/ветвь-A расходятся и имеют 3 и 1 разные коммиты соответственно. Используйте git pull, чтобы объединить удаленную ветку в вашу. Теперь я выполняю GIT тянуть из ветви-A

git pull 

Теперь я получаю кучу сообщений для Auto-слияния и, наконец, большинство файлов имеют конфликт, и я в конечном итоге решить все те конфликты, которые я решил до выдачи GIT перебазироваться - - продолжайте еще раз. После разрешения всех конфликтов я выдаю:

git add 
git ci -m "Fixing the conflicts" 
git push 

Теперь все работает хорошо, и все конфликты разрешены. Но для этого я дважды делал разрешение конфликта, один до переустановки git - продолжал и другие после того, как сделал git pull из-за разветвления ветки.

Так что мой вопрос, так как филиал-А является удаленным, он даже прямо в первую очередь издать перебазирование или должен я просто следовал,

git co master 
git pull 
git co branch-A 
git merge master 
<resolve conflicts> 
git add 
git commit 
git push 

Извините за длинный пост, но я чувствовал, было бы намного яснее поставить то, что я точно видел. Большое спасибо за прохождение моего сообщения, и ваши отзывы очень ценятся.

ответ

1

Большой вопрос: используется ли ветка-А кем-то другим. Если это так, вы никогда не должны его переустанавливать, потому что rebase перезаписывает историю.

Вы также смешиваете rebase с объединением, потому что pull делает неявное слияние. Единственная причина использовать rebase в этом случае - линеаризация истории.

Но тогда почему вы тянете после перебазировки? Вы должны просто push --force и перезаписать историю. Если вы настаиваете ...

pull (merge) и rebase - это два альтернативных метода, чтобы попасть в один и тот же объединенный контент, используя разные истории. Вы должны использовать тот или иной, но не оба.

+0

Отлично! Большое спасибо за разъяснение. – sriram

+0

Подсказка: есть опция 'git pull --rebase' ... – SzG

Смежные вопросы