学习使用gitignore
条评论如何使用.gitignore文件
有的时候我们需要忽略一些文件,不希望放到git版本库里,比如node_modules,或者一些自动生成的log文件,或者cache什么的。
这时候第一个想法就是不把它git add
到暂存区。但是这样也很麻烦,因为如果不是这些特殊文件,我们可以直接git add -A
来将所有文件一次添加,手动add每一个文件真的很头疼。
于是有了.gitignore
文件,在项目文件夹下新建一个.gitignore
文件,在里面写上需要特殊忽略的文件,那么下次git add -A
的时候就不会添加这些文件了。非常方便。
这里要写相对路径,比如这个项目叫violet,我要忽略violet/node_modules
这个文件夹下的所有文件。
那么我可以在violet/.gitignore
文件里这样写
1 | # node模块 |
类似的你还可以只忽略xx结尾的文件,比如*.xx
,就会忽略所有扩展名为xx
的文件。
前面加上感叹号则可以强制不忽略它。比如
1 | # 忽略所有的log文件 |
为什么忽略掉的文件还在Github上?
有的时候添加了忽略似乎版本库里还是有这些文件,是由于你在忽略它之前就曾经将它git add
到版本库了。因此你需要告诉git, 干掉它 。
这里有两种情况,一种是,这个文件不重要,是一些想删就删,删的开心的日志文件xx.log
,那你就可以直接运行git rm xx.log
,然后这个文件就被git删掉了。此时你再生成一下xx.log
,用git status
来查看文件跟踪状态,就发现不会再提示你要添加这个日志文件了。
还有一种情况,那就是一些存放密码或者不想让别人知道的文件,这种文件不能删掉,但是又必须告诉git,你不用再控制这个文件版本了。那么你可以运行git rm secret.yml --cache
,加一个--cache
参数,表示从暂存区删去,但真实文件不会被删掉。
这个技巧还可以解决另一个尴尬的事情。当你在本地直接删除了一个文件或文件夹,没有用git rm
,然后同步到Github后,发现这个文件还在,并没有被删掉,而本地其实已经没了。那么也可以用git rm --cache
来删除。
另外注意,要删除文件夹的话,还要加一个参数-r
,这和git无关,是rm
命令的参数,表示递归删除,不然可能会报错。有时还有些权限问题,所以顺便再加一个-f
表强制删除,略危险但很省心。嗯,死ね。两个合起来可以简写为rm -rf folder
,喜欢作死的可以试试rm -rf /
。
还是别乱试了。。。
如有疏漏,欢迎评论指出,或者前往Github提出issue~谢谢