3

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

master--->branch_2
  |
  |
  V
branch_1

所以有一些独立的发展进入branch_1branch_2。我想将一些特定的代码合并branch_2branch_1使用像 kdiff3 这样的合并工具。

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

提前致谢

4

3 回答 3

1

站在 branch_1 中,您可以简单地cherry-pick从 branch_2 进行任何提交。

git cherry-pick <some sha1>

您还可以在 branch_1 中重新调整您的工作,使其位于 branch_2 之后

git rebase --onto branch_2 branch_1
于 2015-09-25T05:50:58.293 回答
1

听起来您想将来自给定提交的更改的特定部分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
于 2015-09-25T11:47:01.277 回答
0

在目标分支上:

git checkout branch1

在引用 branch2 版本的同时编辑 branch1 代码

git difftool branch2 -- file.txt

像往常一样提交更改

git add file.txt
git commit
于 2015-09-25T05:49:40.577 回答