我正在处理回购中的功能。我在branch_1
顶部创建了一个功能分支(例如branch_2
)和另一个分支(例如branch_1
)。我以前每次更新branch_2
时都会重新设置branch_1
的基数,但是现在branch_1
被合并到master
中,所以我想将branch_2
的基址重设为{{1 }},以便master
仅具有自己的更改。我该怎么做呢?还是正确的方法还是还有其他方法?
答案 0 :(得分:2)
您可以仅将此分支基于master
src/myproject (branch2)$ git rebase master
包含在master中的任何更改将被“吞噬”到这些master更改中,并且您将只剩下该分支包含的不同更改。
答案 1 :(得分:2)
永远不要重新构建功能分支,而是将其与上游合并,这非常方便。但是,这种假设是您不交付合并而仅交付分支的压缩内容(因为谁希望所有这些合并都在主服务器上进行,对吧?)。
在大型系统中,最好将这种升级历史记录保留在您的开发分支中,因为升级会给您的功能带来新的问题。重新设置功能分支可以隐藏导致问题的原因,即使问题当然是相同的。
假设您有master
分支机构,feat1
分支机构为master
,而feat2
分支机构为feat1
。
要将feat2
提升到新的feat1
,请执行以下操作:
git fetch
git checkout origin/feat2
git merge origin/feat1
git push origin feat2
将feat1
提升到新的master
将是:
git fetch
git checkout origin/feat1
git merge origin/master
git push origin feat1
但是接着说,您想切换到feat2
的上游,因为feat1
已交付给master
。没问题。
git fetch
git checkout origin/feat2
git merge origin/master
git push origin feat2
答案 2 :(得分:1)
有几种可能的解决方案供您请求。如果您对Mureinik's answer不满意,可以尝试使用git cherry-pick
重建分支。基本上,从master
创建一个新分支,并从branch_1
合并到master
到HEAD
的{{1}}提交的地方选择所有提交。为此,您将必须使用类似(假设您在新分支上)的命令:
branch_2
假设git cherry-pick branch_2~10 branch_2
合并后branch_2
中的提交数为10。未指定“ commit back”数量的branch_1
是分支的最新提交。