在合并过程中快速选择所有"other"修改



假设从远程分支运行git pull --rebase,这会导致合并到.的文件中出现大量冲突

有没有一种快速的方法可以不用繁琐的文件编辑(一些git命令?),只需从远程分支获取所有备选方案,而忽略本地分支对给定文件的备选方案?

不是,不是,一般来说这是不明智的。不过,你可以给自己写一个脚本:

  • 当rebase因冲突而停止时;我们的";以及";他们的";版本被留在索引/暂存区域中,同时Git试图解决工作树中的冲突
  • 因此,";所有";您需要做的是提取每个此类文件的--theirs版本,您可以使用git restore(如果您的Git早于Git 2.23,则可以使用旧的git checkout)执行此操作
  • 您可以在带有git ls-files --stage的索引中找到这样的文件

编写一个脚本,运行git ls-files --stage,查找存在于三个非零暂存槽中的文件,并使用git restoregit add将工作树副本替换为每个文件的槽-3(--theirs)版本。

请注意,这会破坏你在这些文件中所做的任何工作,即使它没有冲突;因此,它可能会产生完全伪造的文件混合(因为您处理的一些文件可能没有任何冲突,因此可能会带来它们的更改)。

(如果你的意思是"合并,但使用-X theirs",那么是的:只通过-X theirs。这不那么激烈,但并不总是明智的。从文档中也很明显,这就是为什么我认为你不是这个意思。)

最新更新