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

如何在git中将文件历史从一个分支合并到另一个分支?,git,git-merge,Git,Git Merge,因此,首先检查下图,我试图表示我需要什么 绿色方框是提交,黄色、棕色和红色是这些提交的一部分(在我的例子中,提交到通过提交传播的3个文件) 在dev上没有进一步的更改 实际发生的情况:我正在处理一个分支,发现一些更改实际上对dev分支有用,并且实际上与dev2分支无关。因此,我希望在dev分支上进行这些更改 git checkout git merge 实际上,我希望修改离开dev2分支进入dev分支,因此如果我执行checkout>commit,修改将在两个分支上进行,这就是为什么我不想这

因此,首先检查下图,我试图表示我需要什么

绿色方框是提交,黄色、棕色和红色是这些提交的一部分(在我的例子中,提交到通过提交传播的3个文件)

在dev上没有进一步的更改

实际发生的情况:我正在处理一个分支,发现一些更改实际上对
dev
分支有用,并且实际上与
dev2
分支无关。因此,我希望在
dev
分支上进行这些更改

git checkout
git merge
实际上,我希望修改离开
dev2
分支进入
dev
分支,因此如果我执行checkout>commit,修改将在两个分支上进行,这就是为什么我不想这样做


这可能吗?我该怎么做呢?

您可以使用
git log
,找到上次提交的
sha
,该提交应该在dev(红场)中,然后转到您的主分支
checkout master
,只需说出
git merge sha
红场的sha。这在git中很常见。分叉式回购经常发生,合并到原始回购的更新中


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

你可以通过使用
git log
在dev(红场)中找到上次提交的
sha
,然后转到你的主分支
签出主控
,然后说
git merge sha
红场的where sha。这在git中很常见。分叉式回购经常发生,合并到原始回购的更新中


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

你可以通过使用
git log
在dev(红场)中找到上次提交的
sha
,然后转到你的主分支
签出主控
,然后说
git merge sha
红场的where sha。这在git中很常见。分叉式回购经常发生,合并到原始回购的更新中


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

你可以通过使用
git log
在dev(红场)中找到上次提交的
sha
,然后转到你的主分支
签出主控
,然后说
git merge sha
红场的where sha。这在git中很常见。分叉式回购经常发生,合并到原始回购的更新中


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

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

  • 签出原始分支:
    git签出dev
  • 应用所需的提交:
    git cherry pick yellow
    git cherry pick brown
    git cherry pick red
  • 重新基址
    dev2
    dev
    git签出dev2
    git重新基址--到dev

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

    • 签出原始分支:
      git签出dev
    • 应用所需的提交:
      git cherry pick yellow
      git cherry pick brown
      git cherry pick red
    • 重新基址
      dev2
      dev
      git签出dev2
      git重新基址--到dev

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

      • 签出原始分支:
        git签出dev
      • 应用所需的提交:
        git cherry pick yellow
        git cherry pick brown
        git cherry pick red
      • 重新基址
        dev2
        dev
        git签出dev2
        git重新基址--到dev

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

        • 签出原始分支:
          git签出dev
        • 应用所需的提交:
          git cherry pick yellow
          git cherry pick brown
          git cherry pick red
        • 重新基址
          dev2
          dev
          git签出dev2
          git重新基址--到dev

        我不想要整个提交,只是其中的一部分,正如我试图解释的那样,我希望对3个文件所做的所有修改都转到dev分支,如果可能的话,它们不会出现在dev2分支中。但是,我似乎必须使用checkout>commit方法,我不希望整个提交,只是其中的一部分,正如我试图解释的那样,我希望对3个文件所做的所有修改都转到dev分支,并且如果可能的话,它们不会出现在dev2分支中。但是,我似乎必须使用checkout>commit方法,我不希望整个提交,只是其中的一部分,正如我试图解释的那样,我希望对3个文件所做的所有修改都转到dev分支,并且如果可能的话,它们不会出现在dev2分支中。但是,我似乎必须使用checkout>commit方法,我不希望整个提交,只是其中的一部分,正如我试图解释的那样,我希望对3个文件所做的所有修改都转到dev分支,并且如果可能的话,它们不会出现在dev2分支中。但看来我会的