04 2015
22

.gitignore更新后如何生效
2015年04月22日

GIT是个十分受欢迎的版本控制器,尤其适合项目当中有新手的情况,因为除了服务器以外, 每个人都有项目的完整历史,这就减少了因为项目管理员疏忽再加上新手的误操作导致灾难的发生。

GIT新手最容易犯的一个错误就是没有添加.gitignore,而把不该上传的东西上传了, 而GIT老手有时会因为在规则里面写了个.*而导致.gitignore没有加入到版本控制当中, 事后才发现,但此时项目中已充斥了“垃圾”。

此时项目管理者才追悔莫及,干净修改.gitignore并提交到版本控制当中。 但大错已铸成,新添的.gitignore不会影响已经加入到项目中的文件,GIT老手此时也可能没有什么好办法, 只能把不该有的东西手动删除掉,再重新提交。但更麻烦的是,这些“垃圾”可能还有用, 如Java项目中依赖的一些*.jar库文件,直接删了会出问题,要在修好项目后重新加回来。 如果只有几个文件还好,如果成百上千,这样操作,一天都不用干别的了。

但问题总会有聪明办法解决。GIT中用git rm --cached xxx可以在不动项目当前工作空间的情况下, 将文件从当前(未提交)版本中移除。如此而来简单方法就出来了:

git rm -r --cached .
git add .
git commit -m ".gitignore is now working"

在项目根目录执行简单三行命令,就先把所有文件从版本控制中移除,然后再重新加回来。 提交上传后,就发现新的.gitignore就此生效了,不该有的文件不再被传来传去了。