Git按文件类型合并

时间:2018-11-07 20:11:54

标签: git git-merge

我有两个git分支,master和mybranch。 Mybranch具有所有正确的* .json文件,而master具有所有其他正确的文件类型。如何合并它们?

在所有文件中有很多很多合并冲突。如果可以通过某种方式按文件类型进行合并,则不必遍历所有合并文件。

2 个答案:

答案 0 :(得分:2)

git checkout具有选项--ours--theirs,用于在合并期间获取各个版本。所以你做类似的事情

git checkout master
git merge mybranch
git checkout --theirs -- *.json
git checkout --ours -- <the-other-files>
git add .
git commit

您必须在其中弹奏一下壳,以列出要从一个或另一个分支获取的文件。将所需的版本签出到工作树后,add应清除冲突记录。

请记住,--ours是您作为参数传递给初始checkout的分支,而--theirs是您作为参数传递给merge的分支。

此外,在调用add之前,您可以使用--ours--theirs改变主意,因为索引仍然包含所有版本。因此,您实际上应该能够执行git checkout --ours -- .,然后执行git checkout --theirs *.json

答案 1 :(得分:0)

鉴于您想将Mybranch合并到master中,一般建议是:

git checkout master
git merge Mybranch 

如果存在合并冲突,请解决它们。

建议,经常执行将基础迁移到主数据库或合并到本地分支的操作​​,以避免在准备将本地分支的更改引入主数据库时发生大量的合并冲突

UPD:最快的解决方案是使用diff补丁:

  1. 结帐主分支。

  2. 仅为JSON文件创建差异补丁。

    git diff master Mybranch *.json > json.diff

  3. 应用差异

    git apply json.diff

  4. 提交更改。

注释: 如果工作目录中存在冲突-补丁将不适用。为几个或每个JSON创建自己的差异可能会有所帮助,以便对有问题的json文件进行本地化。对于差异化的差异,您可以在应用之前打开差异文件并对其进行编辑。无论哪种方式-如果存在冲突,您必须必须解决它们。