Git 如何在保留一个分支的同时修复多个提交之前的合并冲突?
在我所在的团队中,我们同意在中央存储库中只有一个分支-主分支。我们创建特征分支,但从不推动。一些开发人员忘记了在Git 如何在保留一个分支的同时修复多个提交之前的合并冲突?,git,merge,version-control,tortoisegit,merge-conflict-resolution,Git,Merge,Version Control,Tortoisegit,Merge Conflict Resolution,在我所在的团队中,我们同意在中央存储库中只有一个分支-主分支。我们创建特征分支,但从不推动。一些开发人员忘记了在合并到master之前重新设置其功能分支的基础。所以Git中存在冲突,他们不需要费心解决。(他们只是用自己的来覆盖其他的更改。)其他一些提交会出现并位于这些冲突合并的顶部。这使得中央存储库具有多个分支 这里是一个简化的例子。它类似于龟甲中的内容。()中的名称是分支名称。因为这只是一个例子,我也推(那些特征分支的名称前面有“origin”) 那么,如何在只保留一个分支(主分支)的情况下解
合并
到master之前重新设置其功能分支的基础。所以Git中存在冲突,他们不需要费心解决。(他们只是用自己的来覆盖其他的更改。)其他一些提交会出现并位于这些冲突合并的顶部。这使得中央存储库具有多个分支
这里是一个简化的例子。它类似于龟甲中的内容。()
中的名称是分支名称。因为这只是一个例子,我也推(那些特征分支的名称前面有“origin”)
那么,如何在只保留一个分支(主分支)的情况下解决合并冲突呢
* (feature/feature04, master, origin/master, origin/feature/feature04) Commit in feature 04
|
* Merge branch 'feature/feature03'
|\
| * (feature/feature03, origin/feature/feature03) Commit in feature 03
* | (feature/feature02, origin/feature/feature02) Commit in feature 02
|/
* (feature/feature01, origin/feature/feature01) Commit in feature 01
|
* Commit #1
同一图表的另一视图:
A -- B -- C ------ E -- F -- (other commits) MASTER branch
\------ D --/ feature03 branch
为了使提交历史记录保持远程repo的线性,您应该在提交历史记录中将提交
E
替换为提交D
(如下图所示)
首先,在提交C
的顶部重新设置提交D
的基础,并通过以下方式将提交feature/feature03
指向重新设置基础的提交:
git rebase --onto <commit id for C> <commit id for B> <commit id for D>
git branch -f feature/feature03
然后在提交D'
顶部的master
分支上重新设置其他提交的基础,并通过以下命令重新指向master
分支:
git rebase --onto <commit id for D'> <commit id for E> <commit id for X>
git branch -f master
git checkout master
最后通过以下命令强制将更改后的master
分支提交历史推送到远程repo:
git push -f origin master
注意:功能分支似乎已经推送到远程repo,因为您显示了跟踪分支,如
origin/feature/feature01
,origin/feature/feature02
等。如果您想删除远程repo中的功能分支,可以使用git push:feature/feature01
,git-push:feature/feature02
等等。你的问题不清楚,你说的保持合并冲突是什么意思合并后,冲突得到解决。
git rebase --onto <commit id for D'> <commit id for E> <commit id for X>
git branch -f master
git checkout master
A---B----C---D'---F'---…---X' master
|
Feature/feature03
git push -f origin master