git:如何获取冲突文件的副本?

时间:2017-10-17 14:03:02

标签: git bash

执行git fetchget pull时可能会发生冲突。有没有办法获取所有冲突文件的副本?例如,文件foo.dat存在冲突,那么我希望复制foo.dat.oursfoo.dat.theirs。我认为SVN也有类似的行为。

  1. 获取有冲突的文件名git diff --name-only --diff-filter=U
  2. Foreach使用.ours后缀(xargs cp
  3. 制作副本
  4. 获取他们的副本?

1 个答案:

答案 0 :(得分:3)

Git SCM book,在“手动文件重新合并”下,我们看到:

  

Git将所有这些版本存储在“阶段”下的索引中,每个阶段都有与之关联的数字。第1阶段是共同的祖先,阶段2是您的版本,阶段3来自MERGE_HEAD,您正在合并的版本(“他们的”)。

由此,这是一个近似的bash脚本方法:

for file in $(git diff --name-only --diff-filter=U); do
  git show ":1:${file}" > "${file}".common
  git show ":2:${file}" > "${file}".ours
  git show ":3:${file}" > "${file}".theirs
done