Git:使用Kdiff3从另一个分支合并到一个分支



我熟悉ClearCase,我们可以将文件从任何其他分支合并到分支中。这在git中是如何实现的?例如,我有以下结构

master--->branch_2
  |
  |
  V
branch_1

说明在branch_1branch_2中有一些独立的发展。我想合并一些特定的代码从branch_2branch_1使用一些合并工具,如kdiff3。

编辑:Kdiff3有一个很棒的合并选项,通过比较文件的2或3个版本(来自相同或不同分支),突出显示冲突。然后我们可以跳过每个冲突,从文件的一个或多个版本中选择代码,进行一些编辑(如果需要),最后保存文件。当我使用ClearCase时,这个特性对我来说非常方便。是否有一种方法可以配置git mergetool与kdiff3以相同的方式工作?

Thanks in advance

这听起来像是您想要合并branch_2中给定提交的特定部分更改。

如果是这种情况,您可以使用git cherry-pick --no-commit或(-n)来应用branch_2 中提交的更改,而无需创建新的提交。从那时起,您可以通过暂存已修改文件的一部分来决定提交哪些更改。

下面是一个例子:

git checkout branch_1
git cherry-pick -n <some-commit>  # 1. Apply the changes from some commit in branch_2
                                  # without creating a new commit
git reset HEAD                    # 2. Unstage all changes from that commit
git add -p                        # 3. Decide which changes to include in the commit
git commit                        # 4. Commit those changes

站在branch_1中,你可以从branch_2中简单地提交cherry-pick

git cherry-pick <some sha1>

你也可以在branch_1中修改你的工作,使其位于branch_2

git rebase --onto branch_2 branch_1

在目标分支上:

git checkout branch1

在参考branch2版本时编辑branch1代码

git difftool branch2 -- file.txt

像往常一样提交更改

git add file.txt
git commit

相关内容

  • 没有找到相关文章

最新更新