我有两个分支(A和B),我想合并来自分支A的单个文件与来自分支B的相应单个文件。
当前回答
你可以用:
git merge-file
提示:https://www.kernel.org/pub/software/scm/git/docs/git-merge-file.html
其他回答
我将这样做
Git format-patch branch_old..branch_new文件
这将为文件生成一个补丁。
在目标branch_old上应用补丁
去吧等等补丁
我也遇到过同样的问题。准确地说,我有两个分支A和B,它们有相同的文件,但在一些文件中有不同的编程接口。现在在分支B中修改了独立于两个分支的接口差异的文件f的方法,但这一更改对两个分支都很重要。因此,我只需要将分支B的文件f合并到分支A的文件f。
一个简单的命令已经为我解决了这个问题,如果我假设所有的更改都在分支A和B中提交:
git checkout A
git checkout --patch B f
第一个命令切换到分支A,在那里我想合并B的文件f的版本。第二个命令用B的HEAD的f修补文件f。你甚至可以接受/丢弃补丁的单个部分。你可以在这里指定任何提交,而不是B,它不必是HEAD。
团体编辑:如果B上的文件f在A上还不存在,那么省略——patch选项。否则,您将收到“No Change.”消息。
您可以签出要合并的文件的旧版本,将其保存在不同的名称下,然后在两个文件上运行合并工具。
eg.
B:src/common/storeTs > /tmp/store。ts(其中B是分支名称/提交/标记)
·梅尔德src /普通专卖店。ts / tmp / store ts。
假设B是当前分支:
$ git diff A <file-path> > patch.tmp
$ git apply patch.tmp -R
注意,这只对本地文件应用更改。之后你需要做出承诺。
下面是我在这种情况下的做法。这是一个拼凑,但它对我来说很好。
在工作分支的基础上创建另一个分支。 git pull/git合并修订版(SHA1),其中包含您想要复制的文件。这将合并所有的更改,但我们只使用这个分支来获取一个文件。 解决任何冲突等调查你的文件。 检出您的工作分支 签出合并提交的文件。 提交它。
我试过修补,但我的情况太糟糕了。简而言之就是这样的
工作部门:A 实验分支:B(包含文件.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告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件
- Git错误:遇到7个文件应该是指针,但不是