我正在尝试进行合并,并且存在一堆冲突。这是所有生成的文件,所以我想要做的就是“忽略所有合并冲突,并从我自己的仓库检查所有内容”。
我试过
git checkout . --ours
git add -A
git com -a
它给了我一个错误,因为“unmerged paths”存储桶中仍有文件。我该如何处理?
谢谢!
答案 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的命令来检查要添加的文件。