Git不提交指定文件的方法

Git不提交指定文件的方法,第1张

大家在开发项目的时候都很喜欢使用git作为代码管理工具,但是在开发项目的时候我们的本地配置文件不应该覆盖服务器中的配置文件 ,我们使用命令git status查看待提交文件的时候需要注意不要把本地的配置文件提交到项目上 , 不然的话团队其他人git pull下来的文件就被覆盖了,下面介绍一下有哪些方法可以做到以上的需求:

第一个方法就是改gitignore,把不需要的文件或文件夹添加进去就一劳永逸了,但是这种方法不够灵活,等需要再提交的时候又得在.gitignore文件找到并删除。

第二个方法就是使用命令:git update-index --assume-unchanged 您的文件 标记一下,例如:

提交之前我们再使用命令:git status查看一下有没有此文件了,没有就说明成功了,这个习惯一定要保持好,如果后期想提交该文件的话,那就运行命令:git update-index --no-assume-unchanged 您的文件 取消标志,例如:

当我们忘记了忽略过哪些文件的话,可以运行下面的命令查找出来:

然后取消标志即可,如果需要全部取消标志的不提交文件的话,可以运行下面的命令:

以上就是我要分享的使用Git不提交指定文件的分享,大家都学会了吗?

在使用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,但发现添加不了,原因可能是这个文件被 .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 文件中,

使用命令行配置如下:


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

原文地址: http://outofmemory.cn/bake/11418972.html

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

发表评论

登录后才能评论

评论列表(0条)

保存