是否有一些更简洁的方法让Git忽略我的一些更改而从不提交它们? .gitattributes:
config_to_be_deviated.xml filter=qqq
的.git /配置:
[filter "qqq"] clean = "perl -ne 'print unless /git_please_dont_look_here/'" smudge = (Q=$(mktemp) && cat > $Q && patch -s $Q < /tmp/pp && cat $Q && rm $Q)
patch / tmp / pp在每行中添加了我的更改“git_please_dont_look_here”。
在将文件存入存储库之前,Git会删除所有这些行,并在签出时读取我的更改;我可以继续添加并向config_to_be_deviated.xml
提交有用的更改,但Git不会看到补丁中的更改。
答案 0 :(得分:1)
将它们放入单独的文件中,忽略git中的文件并将其连接到您的构建中,以便将其包含在内?
答案 1 :(得分:1)
尝试git update-index --assume-unchanged --<path>
。对于源代码管理下的文件,它就像gitignore一样。该功能的最初目的是提高git检查修改在包含大量文件的文件夹中的性能。这是doco:
- 假定-不变
--no-assume-unchanged当指定这些标志时,记录的对象名称为 路径未更新。相反,这些 选项设置和取消设置“假设 没有改变“路径的位。当 “假设未改变”位是开启的,git 停止检查工作树文件 对于可能的修改,所以你 需要手动取消设置该位来判断 更改工作树时git 文件。这有时候很有帮助 与一个大项目合作 lstat非常慢的文件系统(2) 系统调用(例如cifs)。
此选项也可用作忽略的粗略文件级机制 跟踪文件中未提交的更改 (类似于.gitignore的用途 未跟踪的文件)。你应该记住 一个显式的git添加操作 仍然会导致该文件 从工作树上刷新。混帐 如果它会失败(优雅地) 需要在索引中修改此文件 例如合并时提交;从而, 如果假定未跟踪的文件是 改变上游,你需要 手动处理这种情况。
答案 2 :(得分:1)
看起来这种“过滤”方法最适合我。
优点:
缺点:
答案 3 :(得分:1)
现在跟踪默认配置,并且您的默认配置自定义不是。
答案 4 :(得分:0)
我不是都熟悉git。对于Mercurial,我使用补丁队列(MQ)或搁置(类似于git stash)来处理这类事情。
git stash
可以方便地使用,如果您是“可本地化”的信息很容易找到(例如,所有在单个配置文件中)。
使用补丁队列有点复杂,但一旦设置正确,因为您可以透明的推/弹方式管理可本地化的信息。您可以在git here on SO上找到补丁队列列表。