git'合并'仅现有文件

时间:2012-01-07 11:38:04

标签: git

我可以执行'合并'只更新当前分支中的现有文件?

例如,我有branch1:/ file1,/ x / file2,/ file3。而branch2:/ file1,/ x / file2,/ z / file4。我想用第一个文件更新第二个分支中的文件file1和file2。

作为一个解决方案,我看到在branch1中为这些文件创建单独的提交,而不是在第二个分支中使用chery-pick。

UPD: 感谢@fge,我已经找到了解决方案(并不像我预期的那么简单):

git co branch2
git co branch1 -- ./
git reset ./
git ci -a
git clean -f

2 个答案:

答案 0 :(得分:1)

您可以在branch2上执行此操作:

git checkout branch1 -- file1 x/file2

然后git add修改后的文件并提交结果。

如果你想拥有branch1的提交消息,你可以使用git commit -c branch1进行提交。

请注意,branch1确实是一个refspec。 git中的一个分支只不过是一个提交,但是由于提交具有到其父级的链接,它实际上是一个“分支”。

答案 1 :(得分:1)

按照正常情况继续进行合并。接下来,通过删除额外的文件来修改nw提交到您想要的形状:

git merge other_branch
rm file another_file #etc
git add -A
git commit --amend -C HEAD

您现在有一个合并comit(定义了2个父提交)。命令如

git branch --contains

现在可以正常使用。仅在您需要正确合并时才执行此操作。