使用git将分支重新绑定到另一个分支后的提交顺序

时间:2016-11-03 22:34:02

标签: git version-control

我有一个主分支,我刚才分出了一个dev分支。到目前为止,我继续在dev分支开发工作。与此同时,主分支中添加了更新的提交。现在我想了解从main到dev分支的更改。特别是,我希望在主分支中的较新更改之上重新设置dev分支中的更改。这些是我采取的步骤:

git checkout main
git checkout dev
git rebase main

在我完成冲突解决步骤后,看起来两个分支的提交混合了。是它应该如何工作?我的印象是主分支的所有新提交都在底部,dev分支的提交将在它们之上。我在这里误解了什么吗?

2 个答案:

答案 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

相关问题