Разделитель Git отклонился после rebase, так зачем rebase?

Недавно я встретил уведомление о том, что моя ветка расходится. Это было тогда, когда я создал ветвь с функциями, нажал ее на удаленный компьютер и несколько дней спустя перестал работать с мастером, когда снова начал работать над ней.

git checkout -b feature-branch
git push origin feature-branch:feature-branch

... и когда у мастера...

git pull origin master
git checkout feature-branch
git rebase master

Но когда я хочу снова нажать свою ветку, он говорит:

On branch feature-branch
Your branch and 'origin/feature-branch' have diverged,
and have 67 and 1 different commit each, respectively.

Я нашел этот ответ в разделе Git, разбросанном после rebase":

Поскольку вы уже нажали на ветку, вы должны были объединиться в источник, а не переустанавливать его.

Вопрос

После прочтения this Я до сих пор не совсем понимаю, что я должен был сделать по-другому в своем потоке, и почему я все еще хочу используйте git rebase. Надеюсь, кто-то может это объяснить, спасибо!

Ответ 1

Идея состоит в том, чтобы переустанавливать только, если вы еще не нажали, чтобы воспроизвести локальные коммиты.

Как только вы нажали (и работаете в команде), вы не должны переустанавливать ветвь поверх master, так как она перезаписывает свой SHA1, заставляя вас принудительно нажимать новое состояние ветки.

http://rypress.com/tutorials/ git/media/5-1.png

Создание git merge master в вашей ветке предпочтительнее: вы разрешаете конфликты локально, затем можете совершать больше коммитов и регулярное нажатие.

http://i.stack.imgur.com/wBMwq.png

Подробнее в разделе В чем разница между объединением master в ветку и объединением ветки в master?"