gpt4 book ai didi

linux - 如何修复 git 中大量文件的 merge 冲突?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:43 25 4
gpt4 key购买 nike

我正在使用 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以机器可读格式获取所有未 merge 文件及其状态的列表。

如果你的Git足够新,它会支持--porcelain=v2 .参见 the git status documentation有关输出格式的详细信息。输出格式 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在路径名上将文件标记为已解析以支持创建的文件。

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

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

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

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

关于linux - 如何修复 git 中大量文件的 merge 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49328561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com