kos*_*tja 12 git version-control branch dvcs branching-and-merging
我有几个功能分支和一个主分支.功能2完成.通常我会改变(使用远程SVN仓库并希望保留历史记录,因此没有定期合并)和ff-merge.但是因为我分支后主人没有改变,所以我想将主头(at E)移动到G.使用git branch -f master G不会导致任何可见的更改,我认为这是因为G在不同的分支上.
git update-ref -f master G这里使用安全吗?我应该坚持使用rebase/ff-merge吗?还有更好的东西?
feature1 C-D
/
master A-B-E
\
feature2 F-G
Run Code Online (Sandbox Code Playgroud)
谢谢.
ral*_*nja 12
您不必合并分支,重置就足够了.假设主人被检出:
git reset --hard feature2
Run Code Online (Sandbox Code Playgroud)
不需要合并 - 只需重命名分支.既然你不关心feature2('已完成'),也不关心现有的主人('E')你只需要以下内容.
git branch -d master
git branch -m feature2 master
Run Code Online (Sandbox Code Playgroud)
简单更好?
请记住,涉及两个关键概念:
当您进行合并(各种风格并包括rebase)时,您正在更改提交图.这些更改涉及添加节点,添加链接或可能移动链接.引用(包括分支和标记)仅指向提交,因此更改引用只会更改指向提交 - 而不是图形的结构.
因此,在您的情况下,不需要对结构进行任何更改,只需更改引用即可.
一行版本是:
git branch -f master feature2
Run Code Online (Sandbox Code Playgroud)
这使得feature2分支保持不变(不同于之前的双线轴,即特征2).
定期将G合并到master中就可以了,不需要重新绑定:
feature1 C-D
/
master A-B-E
\
feature2 F-G
git checkout master
git merge feature2
feature1 C-D
/
master, feature2 A-B-E-F-G
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16738 次 |
| 最近记录: |