git-rebase分支,建立在另一个分支之上,在master上

时间:2018-07-18 05:27:59

标签: git github

我正在处理回购中的功能。我在branch_1顶部创建了一个功能分支(例如branch_2)和另一个分支(例如branch_1)。我以前每次更新branch_2时都会重新设置branch_1的基数,但是现在branch_1被合并到master中,所以我想将branch_2的基址重设为{{1 }},以便master仅具有自己的更改。我该怎么做呢?还是正确的方法还是还有其他方法?

3 个答案:

答案 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合并到masterHEAD的{​​{1}}提交的地方选择所有提交。为此,您将必须使用类似(假设您在新分支上)的命令:

branch_2

假设git cherry-pick branch_2~10 branch_2 合并后branch_2中的提交数为10。未指定“ commit back”数量的branch_1是分支的最新提交。