【学了就忘】Git *** 作 — 55.忽略文件的三种方式

【学了就忘】Git *** 作 — 55.忽略文件的三种方式,第1张

有鉴于此,我们应该寻求一种机制来规避这种事故的发生,在 git 版本控制系统中一般有三种不同的解决方案。

最常用也是最简单的当属 .gitignore 文件

该方式是在工作中最常用的方式,配置方法是在仓库的根目录下新建 .gitignore 文件,在文件里配置忽略规则,同时把 .gitignore 文件加入版本管理。之后可以同步该配置到远程仓库,其他开发者可更新该文件到本地仓库,与其他克隆仓库共享同一套忽略规则。

.gitignore 文件对其所在的目录,及所在目录的全部子目录均有效。

1)查看当前Git工作目录中文件状态

可以看到有6个未被追踪的文件。

2)在Git仓库的根目录下新建一个名为 .gitignore 的文件

因为是点开头,没有文件名,没办法直接在windows系统中直接创建,要通过Git Bash客户端,用Linux系统的方式新建 .gitignore 文件。

3)将需要忽略的文件写入 .gitignore 文件中

提示:每个文件或者梁哗闭正则匹配占一行。

4)将 .gitignore 文件提交到本地版本库

这样就完成可忽略文件的整个过程了。

用这种方式配置忽略文件,不会同步该设置至远程仓库,只在本机起作用。

配置方法是直接编辑Git仓库根目录下的 .git/info/exclude 文件,把要忽略的规则直接写入,这个方法只在本机当前仓库起效,不会对其他的芦拿克隆仓库起效。

1)查看当前Git工作目录中文件状态

可以看到有3个未被追踪的文件。

2)编辑Git仓库根目录下的 .git/info/exclude 文件,配置忽略

3)再次查看当前Git工作目录中文件状态

我们可以看到 local.txt 文件被忽略了。

忽略规则由本机所有仓库共用(也就是对本机的所有Git仓库都起作用),配置方法如下:

Linux中,这时把全局要忽略的文件列表 .gitignore 放当前用户根目录下( ~/.gitconfig ):

Windows中,这时把全局要忽略的文件列表 .gitignore 放当前用户根目录下:

我们以Windows系统为例:

1)查看当前Git工作目录中文件状态

2)创建 .gitignore 忽略文件

我们可以复制用户根目录下的 .gitconfig 文件,并改名为 .gitignore 文件。

注意:

如下:

3)将忽略文件配置到Git全局配置文件 .gitconfig 文件中

通过如下命令进行配置。

执行命令后,查看 .gitconfig 文件内容,如下:

至此之后,所有Git仓库都会自动应用这个 gitignore_global.txt 文件中,所配置忽略的文件。

4)把需要忽略的文件加入到 gitignore_global.txt 文件中

把 gitignore_global.txt 文件中的内容清空,之后添加要忽略的文件。

gitignore_global.txt 文件内容如下:

5)查看 learngit 仓库工作目录文件状态

可以看到 hello.java 和 test.java 两个未被追橡裂踪的文件被忽略掉了。

有些时候,你想添加一个文件到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 文件中,

使用命令行配置如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/8202883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存