执行git fetch
或get pull
时可能会发生冲突。有没有办法获取所有冲突文件的副本?例如,文件foo.dat
存在冲突,那么我希望复制foo.dat.ours
和foo.dat.theirs
。我认为SVN也有类似的行为。
git diff --name-only --diff-filter=U
.ours
后缀(xargs cp
)答案 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