Linux 如何修复git中大量文件的合并冲突?

Linux 如何修复git中大量文件的合并冲突?,linux,git,ubuntu,version-control,Linux,Git,Ubuntu,Version Control,我正在使用gitmergetool命令修复冲突。然而,我有成千上万的冲突,有没有办法简化这一点,让我从远程获得一切 我被要求在命令中输入c、d或a {local}: deleted {remote}: created file Use (c)reated or (d)eleted file, or (a)bort? 由于我有数千个文件,我不想继续发送c。有什么方法可以批量执行此操作吗?假设您需要更改并修改您的更改,您可以执行如下操作: git pull-X他们的 此链接将有助于了解未来的任

我正在使用gitmergetool命令修复冲突。然而,我有成千上万的冲突,有没有办法简化这一点,让我从远程获得一切

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

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

由于我有数千个文件,我不想继续发送c。有什么方法可以批量执行此操作吗?

假设您需要更改并修改您的更改,您可以执行如下操作:

git pull-X他们的


此链接将有助于了解未来的任何其他合并策略

您可以在
git mergetool
之外解决此问题:运行
git status--civille
以机器可读格式获取所有未合并文件及其状态的列表

如果您的Git足够新,它将支持
--cerial=v2
。有关输出格式的详细信息,请参阅。输出格式
v2
通常在所有用途上都优于此格式,但您应该可以使用其中任何一种格式

接下来,您必须编写一个程序。不幸的是,Git没有为此提供任何程序。根据您想要解决的具体情况,您的程序可以相当简单,并且您可以使用shell脚本(sh或bash)作为编程语言,以保持简单

因为您关心的是
git mergetool
所说的情况:

Use (m)odified or (d)eleted file, or (a)bort? 
您感兴趣的是,文件名在第1阶段(“基本”)版本中缺失,在第2阶段(“本地”)版本中也缺失,但在第3阶段(“远程”)版本中存在。(请再次参阅
git status
文档,并查看
git status--ceral=v2
输出的示例,以了解如何检测这些情况。三种模式中的两种模式将为零。)对于这些特定的路径名,只需在路径名上运行
git add
,即可将文件标记为已解析文件,以支持创建的文件

标记完所有此类文件后,可以返回运行
git mergetool
,以解决其他冲突(如果有)

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

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

然后编辑
/tmp/commands.sh
,删除包含要
git添加的文件的所有行。然后将所有这些行更改为
git add
,其中
是文件名。退出编辑器并运行
sh/tmp/commands.sh
以执行所有
git add
命令。那是你的节目

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

git stash
git pull
如果要恢复所做的更改,应键入:

git stash pop
基本上,“git stash”是将更改移动到临时存储库

您可以在以下网站了解更多信息:


-X他们的
只影响低级冲突;Hashim77看到了我所说的高级冲突。您可以为
git merge
命令(
git merge branch-X thethers
)添加
-X thethers
选项,因此无需执行mergetool命令,因为git会自动合并冲突。