git 命令行忽略提交_Git忽略提交规则

在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用git add .的时候,遇到了把你不想提交的文件也添加到了缓存中去的情况,比如项目的本地配置信息,如果你上传到Git中去其他人pull下来的时候就会和他本地的配置有冲突,所以这样的个性化配置文件我们一般不把它推送到git服务器中,但是又为了偷懒每次添加缓存的时候都想用git add .而不是手动一个一个文件添加,该怎么办呢?很简单,git为我们提供了一个.gitignore文件只要在这个文件中申明那些文件你不希望添加到git中去,这样当你使用git add .的时候这些文件就会被自动忽略掉。

有三种方法可以实现忽略Git中不想提交的文件:

1)在Git项目中定义.gitignore文件

对于经常使用Git的朋友来说,.gitignore配置一定不会陌生。这种方式通过在项目的某个文件夹下定义.gitignore文件,在该文件中定义相应的忽略规则,来管理当前文件夹下的文件的Git提交行为。.gitignore 文件是可以提交到公有仓库中,这就为该项目下的所有开发者都共享一套定义好的忽略规则。在.gitingore 文件中,遵循相应的语法,在每一行指定一个忽略规则。如:

2)在Git项目的设置中指定排除文件

这种方式只是临时指定该项目的行为,需要编辑当前项目下的 .git/info/exclude文件,然后将需要忽略提交的文件写入其中。需要注意的是,这种方式指定的忽略文件的根目录是项目根目录。

3)定义Git全局的 .gitignore 文件

除了可以在项目中定义 .gitignore 文件外,还可以设置全局的git .gitignore文件来管理所有Git项目的行为。这种方式在不同的项目开发者之间是不共享的,是属于项目之上Git应用级别的行为。这种方式也需要创建相应的 .gitignore 文件,可以放在任意位置。然后在使用以下命令配置Git:

首先要强调一点,这个文件的完整文件名就是".gitignore",注意最前面有个“.”。一般来说每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。实际项目中,很多文件都是不需要版本管理的,比如Python的.pyc文件和一些包含密码的配置文件等等。这个文件的内容是一些规则,Git会根据这些规则来判断是否将文件添加到版本控制中。

Git忽略文件的原则

-  忽略操作系统自动生成的文件,比如缩略图等;

-  忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;

-  忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

.gitignore文件的使用方法

首先,在你的工作区新建一个名称为.gitignore的文件。

然后,把要忽略的文件名填进去,Git就会自动忽略这些文件。

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。

有时对于git项目下的某些文件,我们不需要纳入版本控制,比如日志文件或者IDE的配置文件,此时可以在项目的根目录下建立一个隐藏文件 .gitignore(linux下以.开头的文件都是隐藏文件),然后在.gitignore中写入需要忽略的文件。

.gitignore注释用'#', *表示匹配0个或多个任意字符,所以上面的模式就是要忽略所有的xml文件,log文件和apk文件。

.gitignore配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为版本管理带来很大的便利。

.gitignore忽略规则的优先级

在 .gitingore 文件中,每一行指定一个忽略规则,Git检查忽略规则的时候有多个来源,它的优先级如下(由高到低):

1)从命令行中读取可用的忽略规则

2)当前目录定义的规则

3)父级目录定义的规则,依次递推

4)$GIT_DIR/info/exclude 文件中定义的规则

5)core.excludesfile中定义的全局规则

.gitignore忽略规则的匹配语法

在 .gitignore 文件中,每一行的忽略规则的语法如下:

1)空格不匹配任意文件,可作为分隔符,可用反斜杠转义

2)以“#”开头的行都会被 Git 忽略。即#开头的文件标识注释,可以使用反斜杠进行转义。

3)可以使用标准的glob模式匹配。所谓的glob模式是指shell所使用的简化了的正则表达式。

4)以斜杠"/"开头表示目录;"/"结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;"/"开始的模式匹配项目跟目录;如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录。

5)以星号"*"通配多个字符,即匹配多个任意字符;使用两个星号"**" 表示匹配任意中间目录,比如`a/**/z`可以匹配 a/z, a/b/z 或 a/b/c/z等。

6)以问号"?"通配单个字符,即匹配一个任意字符;

7)以方括号"[]"包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符。比如[abc]表示要么匹配一个a,要么匹配一个b,要么匹配一个c;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。比如[0-9]表示匹配所有0到9的数字,[a-z]表示匹配任意的小写字母)。

8)以叹号"!"表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。需要特别注意的是:如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用"!"规则是不起作用的。也就是说"!"开头的模式表示否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用"!"也不会再次被包含。可以使用反斜杠进行转义。

需要谨记:git对于.ignore配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;

.gitignore忽略规则简单说明

温馨提示:

如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。简单来说出现这种问题的原因就是Git已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。所以大家一定要养成在项目开始就创建.gitignore文件的习惯,否则一单push,处理起来会非常麻烦。

.gitignore忽略规则常用示例

1)示例

比如你的项目是java项目,.java文件编译后会生成.class文件,这些文件多数情况下是不想被传到仓库中的文件。这时候你可以直接适用github的.gitignore文件模板。https://github.com/github/gitignore/blob/master/Java.gitignore 将这些忽略文件信息复制到你的.gitignore文件中去:

可以看到github为我们提供了最流行的.gitignore文件配置。保存.ignore文件后我们查看下git status,检查下是否还有我们不需要的文件会被添加到git中去:

比如我的项目目录下有一个Config.ini文件,这个是个本地配置文件我不希望上传到git中去,我们可以在gitignore文件中添加这样的配置:

或者你想忽略所有的.ini文件你可以这样写:

如果有些文件已经被你忽略了,当你使用git add时是无法添加的,比如我忽略了*.class,现在我想把HelloWorld.class添加到git中去:

git会提示我们这个文件已经被我们忽略了,需要加上-f参数才能强制添加到git中去:

这样就能强制添加到缓存中去了。如果我们意外的将想要忽略的文件添加到缓存中去了,我们可以使用rm命令将其从中移除:

如果你已经把不想上传的文件上传到了git仓库,那么你必须先从远程仓库删了它,我们可以从远程仓库直接删除然后pull代码到本地仓库这些文件就会本删除,或者从本地删除这些文件并且在.gitignore文件中添加这些你想忽略的文件,然后再push到远程仓库。

2)示例

3)示例

.gitignor忽略规则查看

如果你发下.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

可以看到HelloWorld.class匹配到了我们的第一条*.class的忽略规则所以文件被忽略了。

简单来说,要实现过滤掉Git里不想上传的文件,如上介绍三种方法能达到这种目的,只不过适用情景不一样:

Git忽略规则(.gitignore配置)不生效原因和解决

在使用.gitignore文件后如何删除远程仓库中以前上传的此类文件而保留本地文件

在使用git和github的时候,之前没有写.gitignore文件,就上传了一些没有必要的文件,在添加了.gitignore文件后,就想删除远程仓库中的文件却想保存本地的文件。这时候不可以直接使用"git rm directory",这样会删除本地仓库的文件。可以使用"git rm -r –cached directory"来删除缓冲,然后进行"commit"和"push",这样会发现远程仓库中的不必要文件就被删除了,以后可以直接使用"git add -A"来添加修改的内容,上传的文件就会受到.gitignore文件的内容约束。

额外说明:git库所在的文件夹中的文件大致有4种状态

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果您想要忽略 `.idea` 目录,可以按照以下步骤进行操作: 1. 在 Git 仓库的根目录下创建一个名为 `.gitignore` 的文件。 2. 在 `.gitignore` 文件中添加以下行: ``` .idea/ ``` 这将忽略 `.idea` 目录。 3. 将 `.gitignore` 文件添加到 Git 中,并提交更改: ``` git add .gitignore git commit -m "Add .gitignore file" ``` 4. 如果您之前已经将 `.idea` 目录添加到 Git 中,需要从 Git 中删除该目录: ``` git rm -r --cached .idea ``` 请注意, `--cached` 参数保留本地目录,而不会将其从文件系统中删除。 5. 提交更改: ``` git commit -m "Remove .idea directory" ``` 现在,Git忽略 `.idea` 目录,不会再将其添加到版本控制中。 ### 回答2: 在使用Git提交代码时忽略.idea文件夹是一个常见的需求。.idea文件夹是由JetBrains的开发工具(如IntelliJ IDEA、PyCharm等)自动生成的,它包含了项目的配置信息,例如项目的结构、依赖以及IDE的一些设置等。 为了忽略.idea文件夹,我们可以通过创建.gitignore文件来实现。首先,在项目的根目录下创建一个名为.gitignore的文件。然后,将以下内容添加到.gitignore文件中: .idea/ 接下来,保存并提交.gitignore文件到Git仓库。这样,在执行git add操作时,.idea文件夹就会被忽略,不会被添加到Git跟踪中。 另外,如果你已经将.idea文件夹提交Git仓库中,可以通过以下步骤将其从Git历史记录中移除: 1. 首先,确保你在项目的根目录下。 2. 执行以下命令: git rm -r --cached .idea 这个命令会将.idea文件夹从Git仓库中移除,但在本地保留。 3. 最后,执行以下命令将变更提交Git仓库: git commit -m "Remove .idea folder from Git history" 这样,.idea文件夹就会从Git的历史记录中被移除,但在开发者本地仍然存在。从现在开始,Git将会忽略.idea文件夹,不再追踪它的变化。 总之,通过在项目根目录下创建.gitignore文件,添加.idea/到其中,可以实现对.idea文件夹的忽略。同时,如果已经错误地将.idea文件夹提交Git仓库中,可以使用git rm命令将其移除。这样,我们就能够更好地管理和提交代码到Git仓库中。 ### 回答3: 在git提交代码时,我们可以通过.gitignore文件来忽略某些文件或文件夹。对于.idea文件夹,它通常包含IDE(例如IntelliJ IDEA)的配置文件,如工程文件、编译器设置等。这些配置文件通常不应该纳入版本控制,因为它们是个人或特定环境相关的。 为了忽略.idea文件夹,我们首先需要在项目目录下创建.gitignore文件。打开终端或命令行工具进入项目目录,执行以下命令: ```shell touch .gitignore ``` 然后,用文本编辑器打开.gitignore文件,并在其中添加以下内容: ```shell .idea/ ``` 保存并关闭文件。这样,.idea文件夹就会被git忽略,不会包含在提交的代码中。 需要注意的是,.gitignore文件只能忽略尚未纳入版本控制的文件或文件夹。如果.idea文件夹已经被git跟踪并纳入版本控制中,那么.gitignore文件将不会对其产生作用。此时,我们需要通过以下步骤从git仓库中移除.idea文件夹: 1. 执行以下命令,从git仓库中移除.idea文件夹: ```shell git rm -r --cached .idea/ ``` 2. 执行以下命令,提交变更: ```shell git commit -m "Remove .idea folder from repo" ``` 这样,.idea文件夹就会从git仓库中移除,下次提交代码时将不再包含它。 总而言之,通过在项目的.gitignore文件中添加.idea/来忽略.idea文件夹,并且如果.idea文件夹已经被git跟踪了,可以通过git rm命令将其从git仓库中移除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值