Git交互式合并?

我有两个分支完全相同的文件(因为你想知道它是一个.sql文件),我想交互合并它。

当我遇到冲突(或命令行)时,我想要打开一个diff程序,并准确地select哪些行到哪里。

有没有办法做到这一点?

是的,但主要是通过手动进行。 你会告诉Git你正在合并两个相关的分支,但不应该尝试自己提交结果,( 编辑添加:如果它认为合并是微不足道的快进):

git merge --no-commit --no-ff branch-to-merge 

然后,你会问这个文件,因为它出现在两个分支:

 git show HEAD:filename >filename.HEAD git show branch-to-merge:filename >filename.branch 

和他们的合并基地,

 git show `git merge-base HEAD branch-to-merge`:filename >filename.base 

你会使用你想要的任何工具来合并它们(例如)

 meld filename.{HEAD,branch,base} 

你将阶段( git add filename ),然后提交合并( git commit )。

最简单的方法是做git merge <other_branch然后git mergetoolgraphics化地解决冲突。 请参阅#10935226了解如何设置mergetool。

顺便说一下,你的文件可能会快速的与旧文件合并。 那么你必须更聪明一些。

新手专家提供了一个更深入的方法,但是你经常需要把初始命令改成git merge --no-commit --no-ff <other_branch>因为–no-commit的意思是“不要提交合并,除非是快速合并。“ 对于许多人想要做你想做的事情,这是一个有点刺激。

有时候,最容易混淆的方式并不是很时尚:在另一个工作副本中检查另一个分支,使用你最喜欢的合并工具在你想要的目录中获得你想要的版本,然后提交它。

根据这个要点,温度可能是一个现有的分支。

https://gist.github.com/katylava/564416


主人:

 git checkout -b temp 

在温度:

 git merge --no-commit --no-ff refactor 

…什么阶段的一切,所以:

 git reset HEAD 

然后开始添加你想要的部分:

 git add --interactive 

从您想要合并的分支中:

 git checkout -p branch_to_merge -- 

这不会检出branch_to_merge,但会让你交互地从补丁(diff)中添加hunk。

http://git-scm.com/docs/git-checkout

您可以简单地使用WinMerge , DiffMerge或任何可用的差异/合并UI工具手动完成工作。 如果你想把它挂到“git difftool”,你可以在网上searchfind使这些工具与git一起工作的方法。