git 的忽略文件

了解如何在Git中使用.gitignore文件来排除不必要的文件,如编译产物、系统生成文件及敏感配置,保持工作目录整洁。

忽略特殊文件

阅读: 298459


有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定不爽。

好在Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

忽略文件的原则是:

  1. 忽略操作系统自动生成的文件,比如缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

举个例子:

假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有Desktop.ini文件,因此你需要忽略Windows自动生成的垃圾文件:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

然后,继续忽略Python编译产生的.pyc.pyodist等文件或目录:

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

加上你自己定义的文件,最终得到一个完整的.gitignore文件,内容如下:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

# My configurations:
db.ini
deploy_key_rsa

最后一步就是把.gitignore也提交到Git,就完成了!当然检验.gitignore的标准是git status命令是不是说working directory clean

使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。

有些时候,你想添加一个文件到Git,但发现添加不了,原因是这个文件被.gitignore忽略了:

$ git add App.class
The following paths are ignored by one of your .gitignore files:
App.class
Use -f if you really want to add them.

如果你确实想添加该文件,可以用-f强制添加到Git:

$ git add -f App.class

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

$ git check-ignore -v App.class
.gitignore:3:*.class    App.class

Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

小结

  • 忽略某些文件时,需要编写.gitignore

  • .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

### 创建和配置 `.gitignore` 文件 要在 Git忽略特定文件文件类型,可以通过创建 `.gitignore` 文件并添加相应的规则来实现。`.gitignore` 文件通常位于项目根目录下,并且可以递归地影响所有子目录。 #### 忽略单个文件 如果需要忽略某个具体的文件,比如 `file_01.txt` 或 `file_02.txt`,可以在 `.gitignore` 文件中直接列出这些文件名: ``` file_01.txt file_02.txt ``` 这样,Git 将不再跟踪这些文件的变化[^3]。 #### 忽略某种类型的文件 若希望忽略某一类文件(例如所有 `.log` 文件),可以使用通配符 `*` 来匹配多个文件。例如,在 `.gitignore` 文件中添加以下内容以忽略所有 `.log` 文件: ``` *.log ``` 这将确保 Git 不会追踪任何扩展名为 `.log` 的文件[^5]。 #### 忽略特定目录下的文件 对于特定目录中的文件,如 `model/library/pubspec.lock`,可以指定路径进行忽略: ``` model/library/pubspec.lock ``` 或者,如果想忽略所有子目录下的 `pubspec.lock` 文件,可以使用通配符 `**/` 来表示任意层级的目录: ``` **/pubspec.lock ``` 此规则将应用于整个项目的任何位置出现的 `pubspec.lock` 文件[^4]。 ### 更新已提交文件的状态 如果你已经提交了某些文件到仓库,但后来决定要将其加入 `.gitignore`,你需要从 Git 的追踪记录中移除它们。为此,可以使用 `git rm --cached` 命令。例如,要移除一个特定的 `pubspec.lock` 文件而不删除本地副本,执行: ```bash git rm --cached model/library/pubspec.lock ``` 若需一次性移除所有 `pubspec.lock` 文件,则可以使用通配符: ```bash git rm --cached **/pubspec.lock ``` 完成上述操作后,再次提交更改: ```bash git commit -m "Remove tracked pubspec.lock files according to .gitignore" ``` 此时,这些文件应该不会再出现在 `git status` 的修改列表中[^4]。 ### 删除缓存并重新添加文件 有时,为了使新的 `.gitignore` 规则生效,可能需要先清除 Git 的缓存。可以通过以下命令来实现: ```bash git rm -r --cached . git add . git commit -m 'update .gitignore' ``` 这段代码首先删除了所有已被追踪的文件,然后重新添加所有未被 `.gitignore` 排除的文件,并提交更改。这样做有助于确保 `.gitignore` 中的新规则能够正确应用到整个项目中[^1]。 ### 示例 `.gitignore` 文件 下面是一个简单的 `.gitignore` 文件示例,它包含了常见的几种忽略规则: ``` # 忽略所有.log文件 *.log # 忽略特定文件 file_01.txt file_02.txt # 忽略特定目录下的文件 model/library/pubspec.lock # 忽略所有子目录下的.pub文件 **/*.pub ``` 通过这种方式,你可以根据自己的需求定制 `.gitignore` 文件,从而控制哪些文件文件夹应当被 Git 跟踪,哪些不应当[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值