使用其他提交将修改后的文件从一个分支合并到另一个分支

时间:2018-07-10 09:55:03

标签: git bitbucket

我正在尝试将对特定文件(更改2所示的GitBasics.docx)所做的某些更改合并到另一个分支。

下面是分支develop的最近三个提交(包含我对其进行更改的文件):

commit c5fab21e2837808fbc1a4d351b9d605ae856477e
Author: <>
Date:   Tue Jul 10 17:25:40 2018 +0530

    change 3

commit 872926a8a356183e46d281a14578f3895438ae72
Author: <>
Date:   Mon Jul 9 12:58:33 2018 +0530

    change 2 (made to Git Basics.docx)

commit 25ce9bcf0b2c44e29e148d11ea89df508758d014
Author: <>
Date:   Thu Jul 5 20:22:21 2018 +0530

    change 1

以下是分支test(最近对它进行了其他更改)中的两次最近提交:

commit c9f0ef332e1f5e9f398179372222d2ac5580ee96
Author: <>
Date:   Fri Jul 6 19:41:55 2018 +0530

    change 4

commit 25ce9bcf0b2c44e29e148d11ea89df508758d014
Author: <>
Date:   Thu Jul 5 20:22:21 2018 +0530

    change 1

您可能会看到,更改1是我创建分支test的地方。我想将变更2从develop合并到test。我将无法使用git merge,因为develop还具有与test不同的其他提交(更改4),并且我不希望它们合并。

通过进行一些研究,我发现了git checkout source_branch <paths>命令,该命令目前可以满足我的目的,但我也了解到,此方法只是在新分支中替换文件,而不是合并文件。因此,如果在两个分支上都进行了更改(对同一个文件),那么我将在文件被复制到的分支上丢失这些更改。

我相信的另一个选择是git cherry-pick,但是坦率地说,我无法从在线提供的信息中了解如何使用此命令。如何使用此命令,或者还有其他方法可以实现我要完成的任务?

我指的是http://schacon.github.io/git/git-cherry-pick.html中有关git cherry-pick的信息,我认为所提供的解决方案不是那么简单。我正在共享该链接,以防它对其他人有帮助。

1 个答案:

答案 0 :(得分:2)

由于问题已更改,因此更改了答案。使用:

git checkout test
git cherry-pick 872926a8a

这将在分支测试中创建872926a8a提交(更改2)的副本。