如何将更改合并到单个文件中,而不是合并提交?
我有两个分支(A和B),我想将分支A中的单个文件与分支B中相应的单个文件合并。
我遇到了同样的问题。 确切地说,我有两个分支A
和B
具有相同的文件,但在某些文件中有不同的编程接口。 现在,文件f
的方法与分支B
中的接口差异无关,但在分支B
已更改,但这种更改对于两个分支都很重要。 因此,我需要合并只是文件f
分支B
到文件f
分支的A
。
如果我假设所有更改都在分支A
和B
中提交,那么一条简单的命令已经解决了我的问题:
git checkout A
git checkout --patch B f
第一个命令切换到分支A
,进入我想要合并B
的文件版本f
。 第二个命令使用f
的HEAD
为B
打开文件f
。 您甚至可以接受/丢弃该补丁的单个部分。 而不是B
你可以在这里指定任何提交,它不一定是HEAD
。
社区编辑:如果文件f
对B
不存在上A
还没有,那么忽略--patch
选项。 否则,你会得到一个“没有改变”。 信息。
这是我在这些情况下所做的。 这是一个混乱,但它对我来说工作得很好。
我尝试补丁,我的情况太难看了。 总之,它看起来像这样:
工作分支:实验分支:B(包含file.txt,其中有要更改的变化)。
git checkout A
基于A创建新的分支:
git checkout -b tempAB
将B合并到tempAB中
git merge B
复制合并的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
检出你的工作分支:
git checkout A
检出您的固定文件:
git checkout 7e65b5a52e5f8b1979d75dffbbe4f7ee7dad5017 file.txt
在那里你应该拥有它。 提交你的结果。
你可以使用:
git merge-file
提示:https://www.kernel.org/pub/software/scm/git/docs/git-merge-file.html
链接地址: http://www.djcxy.com/p/45039.html上一篇: How do I merge changes to a single file, rather than merging commits?