有鉴于此,我们应该寻求一种机制来规避这种事故的发生,在 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 的时候通常会遇到一些问题,一些文件我创建了但是我并不想上传或者有些文件我修改了但是并不想上传(为了适应个自己的开发环境),但是在每次git status的时候总能看到它,不仅感到很心烦,而且有时会误上传。笔者接下来介绍两种git 忽略文件的方法。
一般git clone下来的项目是没有 .gitignore文件的需要我们手动创建,然后git 会自动识别这个文件,创建完成之后就可以在里面写一些创建了的文件但不希望上传的部分。
例如 cache , log 等 ,这些文件创建了但是并不想上传,我们可以将其写入 .gitignore文件中,* 代表该路径下的文件
.gitignore这个文件中支持多种忽略的规则,大家可以上网上去查,很多用法。这里不多叙述
但是.gitignore 只支持一些创建了但是不想上传的文件,也就是说不存在缓冲区的文件可以用.gitignore忽略,但是对于那些已经存在缓冲区的文件,修改了却不想上传,我们该如何呢?看第二种方法。
该情况可能出现在,修改了配置文件,或者修改一些配置适应本地环境的文件。
使用 git update-index --assume-unchanged PATH/FILE 来不追踪该文件更新与否。
PATH/FILE 特定文件比如 config/config.php等等。
该情况可能出现在,某些文件可能不需要添加到缓冲区,但是不小心添加到缓冲区,需要忽略,可以先从缓冲区移除,在从.gitignore文件中忽略
git rm --cached testFile //将该文件从缓冲区移除永远不追踪该文件
做完以上步骤时,想必你们也和我一样拥有一个干净的git status 结果,以后修改文件便可以,git add . 直接添加自己已经修改的文件,然后上传,再也不用一个一个文件的添加,还担心添加错。
git 配置语法:
斜杠 / 开头表示目录;
星号 * 通配多个字符;
问号 ? 通配单个字符
方括号 [] 包含单个字符的匹配列表;
叹号 ! 表示不忽略(跟踪)匹配到的文件或目录;
此外,git 对于 . gitignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
我们在使用git对项目进行版本管理的时候,总有一些不需要提交到版本库里的文件和文件夹,这个时候我们就需要让git自动忽略掉一下文件。
举例说明:
注:一定要设置好规则顺序,*python__/ 和!testpython__/test.txt 设置这两规则时,*python__/ 规则要在!testpython__/test.txt规则之前,这样才能使testpython__/test.txt些文件不被忽略
但是往往对于已经提交的文件,在 .gitignore 文件中添加其目录是不会让提交列表中的目录消失的,假如之前没将 test 目录添加到 .gitignore 文件中,提交代码的时候又把 test 目录提交上去了,那后面在 .gitignore 文件中添加 test 目录是不会让提交列表中的 test目录消失的,这个时候我们就需要使用命令删除暂存区中的 test 目录
开发过程中可能还会遇到这样的情况,某个文件没有修改好,但是又要提交代码, 想这次忽略这个文件,下一次提交时再去提交它。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)