Вот как это rebase
работает:
git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>
Предположим, у вас есть
---o----o----o----o master
\---A----B <my branch>
Первые две команды ... совершить git checkout git rebase master
... проверить ветку изменений, которые вы хотите применить к master
ветке. Команда rebase
получает коммиты <my branch>
(которые не найдены в master
) и повторно применяет их к главе master
. Другими словами, родитель первого коммита в <my branch>
больше не является предыдущим коммитом в master
истории, а текущим главой master
. Две команды такие же как:
git rebase master <my branch>
Возможно, будет проще запомнить эту команду, так как ветки "base" и "modify" явные.
, Окончательный результат истории:
---o----o----o----o master
\----A'----B' <my branch>
Последние две команды ...
git checkout master
git merge <my branch>
... выполнить ускоренное слияние, чтобы применить все <my branch>
изменения master
. Без этого шага коммит ребаз не будет добавлен в master
. Окончательный результат:
---o----o----o----o----A'----B' master, <my branch>
master
и <my branch>
обе ссылки B'
. Также с этого момента можно безопасно удалить <my branch>
ссылку.
git branch -d <my branch>
--cached
при проверкеgit diff
. ссылка