如何解决git中的大量文件的合并冲突?

我正在使用git mergetool命令来修复冲突。 然而,我有成千上万的冲突,有没有办法简化这个,所以我从远程获得一切?

我被要求在命令中输入c,d或a。

{local}: deleted
{remote}: created file
Use (c)reated or (d)eleted file, or (a)bort?

由于我有成千上万的文件,我不想继续发送c。 有没有办法做到这一点批量?


你可以在git mergetool之外解决这个问题:运行git status --porcelain以获得所有未合并文件及其机器可读格式的列表。

如果你的Git足够新,它将支持--porcelain=v2 。 有关输出格式的详细信息,请参阅git status文档。 输出格式v2通常对所有用途都很优越,但您应该可以与任何一种方式合作。

接下来,你必须编写一个程序。 不幸的是,Git没有提供这方面的程序。 您的程序可以非常简单,具体取决于您想要解决的具体情况,并且可以使用shell脚本(sh或bash)作为编程语言,以便轻松实现。

既然你关心git mergetool所说的情况:

Use (m)odified or (d)eleted file, or (a)bort? 

您对在阶段1(“基本”)版本中缺少文件名并且在阶段2(“本地”)版本中缺失但存在于阶段3(“远程”)版本中的情况感兴趣。 (再次查看git status文档,查看你的git status --porcelain=v2输出的例子,以了解如何检测这些情况。三种模式中的两种将为零)。对于那些特定的路径名​​,只需运行git add on用于将文件标记为已解析而支持创建的文件的路径名称。

一旦你标记了所有这些文件,你可以回到运行git mergetool来解决其他冲突(如果有的话)。

请注意,您的“程序”可以包含运行:

git status --porcelain=v2 > /tmp/commands.sh

然后编辑/tmp/commands.sh以删除包含您想要git add文件的所有行。 然后更改所有这些行以读取git add <filename> ,其中<filename>是文件的名称。 退出编辑器并运行sh /tmp/commands.sh来执行所有的git add命令。 这是你的程序!


假设你想要他们的改变并修改你的你可以像下面这样做一个拉动:

git pull -X他们的

其他stackOverflow答案

git pull -X

git合并策略此链接将有助于理解其他未来合并策略


如果您希望所做的所有更改都将被删除,并且您将与远程同步。 您应该执行以下操作:

git stash
git pull

如果你想恢复你所做的改变,你应该输入:

git stash pop

基本上'git stash'将更改转移到临时存储库。

你可以在以下方面学习

NDP软件:: Git Cheatsheet

链接地址: http://www.djcxy.com/p/45035.html

上一篇: How to fix merge conflicts for a lot of files in git?

下一篇: Git how to merge conflict if want to use source or destination file only