接受git中的所有合并冲突

时间:2010-05-12 20:06:38

标签: git merge

我正在尝试进行合并,并且存在一堆冲突。这是所有生成的文件,所以我想要做的就是“忽略所有合并冲突,并从我自己的仓库检查所有内容”。

我试过

git checkout . --ours
git add -A
git com -a

它给了我一个错误,因为“unmerged paths”存储桶中仍有文件。我该如何处理?

谢谢!

4 个答案:

答案 0 :(得分:7)

Git命令非常警惕隐藏冲突 - 你几乎必须明确检查冲突的文件,让它知道它是固定的。 -f没有git add样式选项让它知道你真正的意思,这似乎很奇怪,但这里有一个别名,我会提供帮助:

add-unmerged = \
    "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; git add `f`"

额外提示:如果您将“git add”更改为$ EDITOR,您现在拥有edit-unmerged,用于编辑所有冲突的文件!

答案 1 :(得分:4)

使用 custom merge driver
您可以在位于正确目录中的.gitattributes声明该驱动程序(具有您不想处理合并的生成文件的目录)

* merge=keepMine

(您可以指定更精确的模式来隔离与自定义合并相关的确切文件)

配置:

[merge "keepMine"]
        name = always keep mine during merge
        driver = keepMine.sh %O %A %B

有关完整示例,请参阅“How do I tell git to always select my local version for conflicted merges on a specific file?”。

答案 2 :(得分:0)

在这种情况下,使用正则表达式将有助于暂存。

解决冲突后,要添加未合并路径中的文件,可以使用文件的公共标识符。

例如,如果需要提交的文本文件和xml文件很少,则文件扩展名为.txt和.xml,请使用以下命令暂存文件。

Wiql wiql = new Wiql()
    {
        Query = "Select [State], [Title] " +
                "From WorkItems " +
                "Where [Work Item Type] = 'Bug' " +
                "And [System.TeamProject] = '" + project + "' " +
                "And [System.State] <> 'Closed' " +
                "Order By [State] Asc, [Changed Date] Desc"
    };
//create instance of work item tracking http client
using (WorkItemTrackingHttpClient workItemTrackingHttpClient = new WorkItemTrackingHttpClient(uri, credentials))
{
    //execute the query to get the list of work items in the results
    WorkItemQueryResult workItemQueryResult = workItemTrackingHttpClient.QueryByWiqlAsync(wiql).Result;
}

注意:这将在存储库中添加所有.txt和.xml文件,甚至是未跟踪的文件。

答案 3 :(得分:0)

不支持本机git,但是您可以尝试以下hack:

git status | grep "both modified:" | awk '{print $NF}' | xargs git add

为了安全起见,请先运行不带xargs的命令来检查要添加的文件。