0%

git排除单个文件

不追踪某些文件的变化

项目中生成的一些临时文件往往不需要添加到版本管理中,这些文件可以通过在.git/info/exclude文件中设置,例如在该文件中添加以下内容的话,以.iml结尾的文件和target、.idea、test目录下的文件就不会被git监控:

1
2
3
4
*.iml
target/
.idea/
test/

如果这些文件已经被添加到git中,可以通过git rm --cached 文件全路径名将文件从git索引中删除(不删除文件本身),然后在配置到exclude中

merge分支时不merge特定文件

在一些场景下不同分支的一些文件不应该合并,例如测试环境和生产环境的数据库配置文件。这种情况下即使在.git/info/exclude配置了不追踪这些文件,merge的时候还是会被merge。一种很好的办法是在.git/info/attributes中配置不被merge的文件(不包含文件路径),例如:

1
2
SpringDispatcher-servlet.xml merge=ours
log4j.xml merge=ours

然后执行git config --global merge.ours.driver true定义一个merge策略ours,再执行merge命令时,定义在attributes中的文件就不会参与merge了。

参考资料

Git Documentation