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 mergetool
graphics化地解决冲突。 请参阅#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。
您可以简单地使用WinMerge , DiffMerge或任何可用的差异/合并UI工具手动完成工作。 如果你想把它挂到“git difftool”,你可以在网上searchfind使这些工具与git一起工作的方法。