我有一个主分支,我刚才分出了一个dev分支。到目前为止,我继续在dev分支开发工作。与此同时,主分支中添加了更新的提交。现在我想了解从main到dev分支的更改。特别是,我希望在主分支中的较新更改之上重新设置dev分支中的更改。这些是我采取的步骤:
git checkout main
git checkout dev
git rebase main
在我完成冲突解决步骤后,看起来两个分支的提交混合了。是它应该如何工作?我的印象是主分支的所有新提交都在底部,dev分支的提交将在它们之上。我在这里误解了什么吗?
答案 0 :(得分:1)
As Git Doc say手动解决冲突并使用所需的分辨率更新索引后,您可以使用
继续重新定位过程git rebase - 继续
答案 1 :(得分:1)
您的理解是正确的。
如果要将更改从dev分支重新应用到主分支(主分支的提交将位于底部,dev分支的提交将位于它们之上),则需要以下两个步骤:
1.git checkout dev
2.git rebase main
像这样的rebase工作理论:
1.找到dev和main
的共同祖先(图中的E)2.通过比较祖先E和dev分支的每个提交来获取diff(每个提交diff保存在不同的临时文件中)
3.切换到主分支,逐个应用主分支上的step2的每个差异
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
中的更多详情 A---B---C dev
/
D---E---F---G main
D---E---F---G---A’---B’---C’ main
注意:在主分支上应用diff时,可能会有冲突。您需要修改冲突文件并使用git add添加修改后的文件,然后使用 git rebase --continue ,这样它将在主分支上应用下一个差异。
请提醒:完成变基后,主分支仍然指向G(参见图表)和dev分支指向C'。如果你想主分支也指向C',你可以使用git checkout main和git merge dev