Вот как работает rebase
:
git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>
Предположим, у вас есть
---o----o----o----o master
\---A----B <my branch>
Первые две команды ... commit 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>
person
cmcginty
schedule
24.02.2009
--cached
при проверкеgit diff
. ссылка - person Geoffrey Hale   schedule 02.12.2015