ОК, это слишком долго для комментария.
Перефразируя руководство (git help rebase
)
Assume the following history exists and the current branch is "new_feature":
A---B---C new_feature
/
D---E---F---G develop
From this point, the result of either of the following commands:
git rebase develop
git rebase develop new_feature
would be:
A'--B'--C' <new_feature
/
D---E---F---G <develop
Теперь, если у вас возникли конфликты, фактическое состояние после первоговыполнение rebase
будет
A'--B'--C'--[local state]
/ ^
D---E---F---G new_feature
^ develop
, где [local state]
- конфликтующее слияние, которое вам еще предстоит исправить.После того, как вы разрешите конфликты слияния и добавите разрешенные файлы в индекс, вы запустите git rebase --continue
: теперь ваше состояние будет
A'--B'--C'--H <new_feature
/
D---E---F---G <develop
Очевидно, что в этот момент слияние new_feature обратно в development может быть быстрым.отправлено так:
A'--B'--C'--H <new_feature <develop
/
D---E---F---G
но если это не так, вы получите это вместо
A'--B'--C'--H <new_feature
/ \
D---E---F---G---------------I <develop
Теперь, какой бы из них вы ни предпочли с временной точки зрения, это не очевиднопочему либо возникнет проблема ... если вы никогда не завершите ребаз и не разрешите конфликты с помощью H
, но я думаю, что git будет жаловаться на это.