lou*_*oup 580
我遇到了同样的问题.确切地说,我有两个分支A和B相同的文件,但在某些文件中有不同的编程接口.现在,文件的方法f(独立于两个分支中的接口差异)在分支中被更改B,但是这两个分支的更改很重要.因此,我需要将f分支B文件合并到分支文件f中A.
一个简单的命令已经解决了这个问题对我来说,如果我认为所有的改变都在两个分支承诺A和B:
git checkout A
git checkout --patch B f
Run Code Online (Sandbox Code Playgroud)
第一个命令切换到分支A,进入我要合并B文件版本的位置f.第二个命令补丁文件f用f的HEAD的B.您甚至可以接受/丢弃补丁的单个部分.而不是B你可以在这里指定任何提交,它不一定是HEAD.
社区编辑:如果文件f上B不上不存在A呢,则省略--patch选项.否则,你将获得"无变化".信息.
egg*_*ers 15
这是我在这些情况下所做的.这是一个kludge但它对我来说很好.
我尝试修补,我的情况太难看了.简而言之,它看起来像这样:
工作分支:实验分支:B(包含file.txt,其中包含我想要折叠的更改.)
git checkout A
Run Code Online (Sandbox Code Playgroud)
基于A创建新分支:
git checkout -b tempAB
Run Code Online (Sandbox Code Playgroud)
将B合并到tempAB中
git merge B
Run Code Online (Sandbox Code Playgroud)
复制合并的sha1哈希:
git log
commit 8dad944210dfb901695975886737dc35614fa94e
Merge: ea3aec1 0f76e61
Author: matthewe <matthewe@matthewe.com>
Date: Wed Oct 3 15:13:24 2012 -0700
Merge branch 'B' into tempAB
Run Code Online (Sandbox Code Playgroud)
结账你的工作分支:
git checkout A
Run Code Online (Sandbox Code Playgroud)
检查你的固定文件:
git checkout 7e65b5a52e5f8b1979d75dffbbe4f7ee7dad5017 file.txt
Run Code Online (Sandbox Code Playgroud)
你应该拥有它.提交你的结果.
小智 11
这使用git的内部difftool.也许还有一点工作要做,但要直截了当.
#First checkout the branch you want to merge into
git checkout <branch_to_merge_into>
#Then checkout the file from the branch you want to merge from
git checkout <branch_to_merge_from> -- <file>
#Then you have to unstage that file to be able to use difftool
git reset HEAD <file>
#Now use difftool to chose which lines to keep. Click on the mergebutton in difftool
git difftool
#Save the file in difftool and you should be done.
Run Code Online (Sandbox Code Playgroud)
小智 8
你可以使用:
git merge-file
Run Code Online (Sandbox Code Playgroud)
提示:https://www.kernel.org/pub/software/scm/git/docs/git-merge-file.html
我发现这种方法简单实用:如何“合并”另一个分支中的特定文件
事实证明,我们正在努力。我们的好朋友git checkout是完成这项工作的正确工具。
git checkout source_branch <paths>...我们可以简单地给git checkout提供功能分支A的名称,以及要添加到主分支的特定文件的路径。
请阅读全文以获得更多理解
下面的命令将 (1) 比较正确分支的文件,到 master (2) 以交互方式询问您要应用哪些修改。
git checkout --patch master