如何在git中的两个分支之间同步一些文件?

时间:2016-04-05 07:34:38

标签: git

我对git和我的回购有问题。

首先我写例子

git checkout Proj1
# modify index.html
git commit -am "Modify Index.html"
git checkout Proj2
git show Proj1:index.html > index.html
git commit -am "Modify Index.html"
git checkout Proj1

这是我将同一文件内容保存在两个分支中的方法。

当然,如果提交只包含我想要同步的文件,我可以使用cherry-pick。 How can we sync files between two branches in git?

您是否有解决此问题的简短解决方案 也许写一些别名?
我可以在哪里保存文件列表以进行同步?

1 个答案:

答案 0 :(得分:0)

如果您不关心历史记录,那么您可以在分支2上单独提交,其中包含与Proj1中提交提示完全相同的文件:

git checkout Proj2
git checkout Proj1  -- index.html

git commit -am "Modify Index.html"

从本质上讲,这意味着在Proj1分支中查看文件是完全正确的。

git checkout --表示在短划线后提供文件名(或路径)。如果您想要更改存储库中的某些文件并保留其他文件,这也很有用。

然后,如果你愿意,你也可以重用你在Proj1中提交的提交消息,如下所示:

git checkout Proj2
git checkout Proj1  -- index.html

git commit -a -C Proj1

Git commit -C表示重用您已有的提交评论。

来自git documentation "git checkout"

  

git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>

     

当   或--patch,git checkout不切换分支。它   从索引文件或更新工作树中的命名路径   来自命名(通常是提交)。

     

[...]

     

git checkout with或--patch用于恢复已修改或。{   从索引或替换中删除其原始内容的路径   带有命名内容的路径(最常见的是a   提交-ISH)。

来自git documentation "git commit"

  

git commit -C <commit>

     

--reuse-message=<commit>

     

获取现有的提交对象,并重用日志消息和   创建时的作者信息(包括时间戳)   提交。