作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们有一个自动生成的 javascript 文件,该文件在我们的 git 存储库中进行了跟踪。问题在于它在注释中包含一个(无用的)时间戳,这通常会为我们造成微不足道的 merge 冲突。我想避免发生这些冲突。
我以为我找到了a solution with .gitattributes and filter/smudge .我按以下方式设置它,以便在提交或 checkout 时从文件中删除此时间戳行:
.git 属性:
<the file>.js filter=tsfilter
<the file>.js smudge=tsfilter
.git/配置:
[filter "tsfilter"]
clean = perl -pe \"s/\\/\\/.*<the pattern>.*$//\"
smudge = perl -pe \"s/\\/\\/.*<the pattern>.*$//\"
虽然这似乎已经消除了 merge 冲突,但它引入了另一个烦恼,因为该文件现在仍然处于不断修改的状态。也就是说,“状态”静止图像显示它已修改,因为本地(预过滤)副本包含时间戳行(但提交的文件不包含)。
有没有更好的方法来解决这个问题,既避免了 merge 冲突,又 stash 了对文件这一部分的本地更改?
最佳答案
我可能没有正确解释您的问题,但听起来您可以对相关文件使用 ours
或 theirs
merge 策略。基于对 this question 的回答,您可以执行以下操作:
.git 属性:
file.js merge=ours
.git/配置:
[merge "ours"]
name = Keep my file
driver = true
这将始终保留您的文件版本。
theirs
merge 只是稍微困难一些——您不能只是将驱动程序更改为 false
,您需要定义一个脚本来保留它们的更改。上面链接的问题更详细地涵盖了他们的
策略。
关于git - 如何让git忽略某些文件冲突和差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13426032/
我是一名优秀的程序员,十分优秀!