当工作了一段时间,或者有了其它开发者加工后,发现,很多垃圾文件,资源文件,项目文件都被git给版本管理了起来。这时,开始补救,首先想到的是加一个.gitignore文件。
或者,若linux平台中
总之,你会发现,有一类情况,就是,你已经被管理起来的文件,即使加进了.gitignore中,也没有被git排除。对的,这就是仅用.gitignore方式来排除解决不了的。因为,只有未被加入到版本管理中的文件,并且版本分支中睁喊迟逗无此文件才能起作用。
这时,你可能抱怨,但没关系,谁让你三板斧时那么顺手了。
要想排除已经管理起来的文件。还要接着做下面两个事。
这时你要做一个决定,你是想彻底的删除这个文件还是仅仅是排除git管理。
如果是此文件没有用了,那么,既然有git add,也就一定悉旦野有git rm
但如果这个文件是一个IDE的配置文件或者是项目本地化使用的文件,可删除不得。否则,你的项目可能打开不了。这时就不是删除而是排除。这个文件可以保留在你的本地,而且git的其它开发人员也不会update到你的这个文件了。使用下面的命令吧:
对了,其它不变,只是加一个选项即可。让你达成本地保留,git排除的效果,当然,最好在第一步.gitignore中加入,以备继续使用“三板斧”。
有些时候,你想添加一个文件到Git,但发现添加不了,原因可能是这个文件被 .gitignore 忽略了:
如果你确实想添加该文件,可以用 -f 参数强制添加到Git本地版本陆绝库:
关于 -f 参数,描述如下:
-f, --force : Allow adding otherwise ignored files. 允许添加被忽略的文件。
或者你发现,消败可能是 .gitignore 写得有问题,需要找出来到底哪个规则写错了,可以用 git check-ignore 命令检查:
Git会告诉我们, .gitignore 的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。
还有些时候,当我们编写了规则排除了部分文件时:
但是我们发现 .* 这个规则把 .gitignore 也排除了,并且 App.class 需要被添加到版本库,但是被 *.class 规则排除了。
虽然可以用 git add -f 强制添加进去,但有强迫症的童鞋还是希望不要破坏 .gitignore 规则,这个时候,可以添加两条例外规则:
把指定文件排除在 .gitignore 规则外的写法就是 ! +文件名,所以,只需把例外文件添加进去即可。
小结
Git检查忽略规则的时候有多个来源,它的优先级如下(由高到低):
之前的忽略方案,都是适用于未跟踪文件的忽略,而对于已跟踪(track)文件的改动并不适用,好在针对这种情况,Git也提供了我们方法去忽略。
换句话说,就是添加忽略之后,修改已经提交到版本库中的文件是无法忽略的。
自己思考的方式: (稀烂哈哈)
正确的做法:
我们在配置全局忽略 .gitconfig 文件的时候,可能会看到如下配置:
那么 autocrlf = true 和 safecrlf = false 是什么意思?
LF是Linux系统下的换行符,而CRLF是windows系统下的换行符。由于我们的文件创建于Linux系统下(Git Bash中创建),而保存中windows系统中,所以文件中的行结束符,要早桥姿使用windows下的CRLF格式换行,而在Git中的默认配置是自动转换。
因为在Git的忽略文件中,是一行一行的忽略规则,而 autocrlf 和 safecrlf 就是对转变换行格式的具体配置。
以上可手动配置在 .gitconfig 文件中,
使用命令行配置如下:
这样即可保证仓库中永远都是LF, 而且在Windows工作空间都是CRLF,在Mac/Linux工作空间都是LF。
以上可手动配置在 .gitconfig 文件中,
使用命令行配置如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)