如何在git中将文件历史记录从分支合并到另一个分支?

时间:2015-07-03 09:34:34

标签: git git-merge

首先检查下面的图像,我试着代表我需要的东西 git situation

绿色正方形是提交,黄色,棕色和红色是这些提交的一部分(在我的情况下,提交通过提交传播的3个文件)。

dev

没有进一步的更改

实际发生的事情:我正在开发一个分支,发现某些更改实际上对dev分支很有用,并且实际上与dev2分支无关。所以我想在dev分支上进行那些更改。

git checkout
git merge

我实际上希望修改离开dev2分支并进入dev分支,所以如果我执行结帐>提交修改将在两个分支上,这就是为什么我不会我喜欢这样做。

这甚至可能吗?我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用sha找到应该在dev(红色方块)中的最后一次提交的git log,然后转到您的主分支checkout master然后说git merge SHA其中红色的SHA为SHA。这在git中很常见。它通过forked repos发生了很多,以便合并原始的更新。

请记住,这会获得整个提交,但我不确定这是否是您想要的。如果你只想要那些提交中的一些文件,那将会困难得多。然后你应该看看this question

答案 1 :(得分:1)

是的,这是可能的。你需要做三件事:

  • 查看原始分支:git checkout dev
  • 应用您想要的提交:git cherry-pick yellowgit cherry-pick browngit cherry-pick red
  • dev2重新投放到devgit checkout dev2git rebase --onto dev