如何将旧分支中的一个更改合并到新分支?

时间:2014-01-08 00:51:08

标签: git

情景:

  • 主分支中的开发
  • 将master master分配到Feature分支,并将其发送到QA,其中包含一个功能
  • 在主人中更多地开发
  • git checkout Feature
  • 做一点修理
  • 使用该修复功能将功能发送回QA
  • git checkout master
  • git merge Feature

想象一下,当Git说“好吧,你希望主人看起来像现在修复”时我感到惊讶,并且把我所有的“开发更多”改变掉了。我需要它只应用与两个分支分叉时不同的唯一#标签。

我如何执行这个简单的& amp;明显的情况?噩梦将是我在主人身上做出同样的改变,然后当相同的变化进入“生产”分支时,得到一个无关紧要的不可调和的合并冲突......

2 个答案:

答案 0 :(得分:4)

如果没有人依赖你的功能分支(即如果没有人从你推动的帽子分支中拉出来),我肯定会在master之上重新加注它:

git checkout master
# make sure master is up-todate
git pull

# rebase my feature branch on top of master
git checkout myFeatureBranch
git rebase origin/master

它会在master上重播您的修改,您可以在功能分支中本地解决任何冲突。

然后合并回主人是一个微不足道的快进

git checkout master
git merge myFeatureBranch

最后你可以推master:上游回购将再次接受这些更改作为快进合并(你只在origin/master之上添加新的提交)

答案 1 :(得分:1)

你有两种可能性: 1 /您应首先合并您的功能上的主更改,潜在地解决您的冲突,然后当它正常时,将您的功能合并到主设备中。

git checkout master
git pull
git checkout Feature 
git pull 
git merge master --no-commit --no-ff

# Analyze the changes that will be merged into your Feature
git commit 
git push

并在您的主人身上进行相同的合并

2 / Cherry选择你想要的提交,更新冲突并提交。

git cherry-pick _your_Hash_