我正在开始测试从cvs转到git,我的所有测试都有问题。
我们维护FreeBSD源的自定义副本,因此在cvs中,我们在发布新的FreeBSD版本时执行以下操作:
我尝试用git做同样的事情,但它确实有效,但几乎所有的FreeBSD文件都有这样的自定义ID:
$FreeBSD: release/7.0.0/COPYRIGHT 175036 2008-01-01 09:36:30Z imp $
这些行总是会改变,并且由于它们存储在svn存储库(release / 7.0.0,7.1.0,7.2.0)中,git会产生许多需要手动修复的冲突。 / p>
我想知道是否有办法配置git来忽略这些行上的差异并使用新的但不问。
我可以使用diff命令忽略这些行,如下所示:
diff -q -I'[$]FreeBSD:.*$'
提前谢谢。
答案 0 :(得分:1)
由于这些变化,我不确定您是否可以在合并期间避免冲突。
但是,您可以做的是一个小脚本,能够列出要合并的所有文件,对每个文件执行diff -q -I'[$]FreeBSD:.*$'
,对于没有差异的文件,请执行
git checkout --theirs theFreeBSDFile
然后合并的简历将能够补充冲突的合并。
'git checkout --theirs
'查看未合并路径的第3阶段(他们的)。
实际上,git mergetool
对于这项工作来说是完美的:在涉及FreeBSD文件的合并之前,将mergetool实用程序设置为该脚本,如问题Is it possible for git-merge to ignore line-ending differences?中所述。
如果您设置mergetool配置以信任该脚本的退出代码,那么除了FreeBSD自定义行之外不显示任何差异的任何文件将是“git checkout --theirs
”并且据报道“合并”,另一个文件将不会合并相同的脚本
最后,如果简历仍然显示冲突的文件,请将您的合并工具重置为您喜欢的difftool,并解决剩余的冲突文件。