Git的忽略文件

管理未追踪文件

在日常中,有些文件我们只想本地使用,不想上传到远程仓库中被别人看到,可如果我们不追踪这些文件,git status时Git就会絮絮叨叨的提醒我们工作目录中一些未跟踪的文件,所以我们可以通过.gitignore文件来让获得清净

由于我是在Windows环境下,不能直接创建空文件名的文件,所以去bash里创建(移动到所在目录):

> touch .gitignore

用法:

假如我们要忽略一个临时文件test.tmp,那么在.gitignore文件中写入*tmp即可

《Pro Git》里对.gitignore格式规范的解释:

  • 所有空行或者以注释符号 # 开头的行都会被 Git 忽略
  • 可以使用标准的 glob 模式匹配
  • 匹配模式最后跟反斜杠(/)说明要忽略的是目录
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反

glob模式:
指 shell 所使用的简化了的正则表达式

星号(*)匹配零个或多个任意字符

[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c)

问号(?)只匹配一个任意字符

如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)

所以 *tmp,就是指忽略所有以tmp结尾的文件

再来看一个 .gitignore 文件的例子:

# 此为注释 – 将被 Git 忽略

# 忽略所有 .a 结尾的文件

*.a

# 但 lib.a 除外

!lib.a

# 仅仅忽略项目根目录下的 TODO 文件

# 不包括 subdir/TODO

/TODO

# 忽略 build/ 目录下的所有文件

build/

# 忽略 doc 目录下的所有 .txt 文件

# 会忽略 doc/notes.txt 

# 但不包括 doc/server/arch.txt

doc/*.txt

在项目一开始就把.gitignore设置好,可避免不必要的文件对代码产生干扰,比如有些需要本地生成的文件,如果放在远程仓库中被其他人下载使用,也可能会导致程序无法正常运行

参考: Crossin的编程教室

### 创建和配置 `.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、付费专栏及课程。

余额充值