Ste*_*ven 68 git version-control
我有两个分支与完全相同的文件(如果你想知道它是一个.sql文件),我想以交互方式合并它.
我想要在出现冲突(或命令行)时像我一样打开一个差异程序,并准确选择哪些行去哪里.
反正有没有这样做?
Phi*_*ler 67
是的,但主要是通过手动实现这一点.你会告诉Git你正在合并两个相关的分支,但它不应该尝试自己提交结果,(编辑添加:如果它认为合并是微不足道的话,也不要快进):
git merge --no-commit --no-ff branch-to-merge
Run Code Online (Sandbox Code Playgroud)
然后你会问git这个文件出现在两个分支中:
git show HEAD:filename >filename.HEAD
git show branch-to-merge:filename >filename.branch
Run Code Online (Sandbox Code Playgroud)
和他们的合并基地,
git show `git merge-base HEAD branch-to-merge`:filename >filename.base
Run Code Online (Sandbox Code Playgroud)
你将使用你想要的任何工具合并它们(例如)
meld filename.{HEAD,branch,base}
Run Code Online (Sandbox Code Playgroud)
你将暂存那个(git add filename),然后提交merge(git commit).
小智 38
最简单的方法是做git merge <other_branch然后git mergetool以图形方式解决冲突.有关如何设置mergetool的信息,请参阅#10935226.
问题是,您更改的文件可能会与较旧的文件快进合并.然后你必须更聪明一点.
Novelocrat提供了一个深入挖掘的好方法,但是你经常需要更改初始命令,git merge --no-commit --no-ff <other_branch>因为--no-commit实际上意味着"不要提交合并......除非它是快进合并." 对于很多想要完全按照自己的意愿行事的人来说,这有点像毒刺.
有时最不容易混淆的方式不是很时尚:在另一个工作副本中查看另一个分支,使用您喜欢的合并工具在您想要的目录中获取所需的版本,然后提交它.
Hug*_*ugh 29
根据这个要点,temp可能是现有的分支.
https://gist.github.com/katylava/564416
在主人:
git checkout -b temp
Run Code Online (Sandbox Code Playgroud)
在临时:
git merge --no-commit --no-ff refactor
Run Code Online (Sandbox Code Playgroud)
...哪个阶段,所以:
git reset HEAD
Run Code Online (Sandbox Code Playgroud)
然后开始添加你想要的部分:
git add --interactive
Run Code Online (Sandbox Code Playgroud)
taj*_*taj 22
从要合并的分支:
git checkout -p branch_to_merge --
Run Code Online (Sandbox Code Playgroud)
这不会检查branch_to_merge,但会让你以交互方式添加来自补丁(差异)的帅哥.
http://git-scm.com/docs/git-checkout
| 归档时间: |
|
| 查看次数: |
49142 次 |
| 最近记录: |