Git忽略文件

本文介绍了如何在Git仓库中管理忽略文件,包括本地仓库忽略、当前工作目录添加文件忽略、全局忽略设置以及如何使用.gitignore文件进行配置。通过遵循指南,开发者能够有效地排除不必要的文件跟踪,提高版本控制系统的效率。

有很多文件不必使用git管理。例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等。使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引。

解决方案:
1. 本地仓库忽略
本地仓库的文件忽略规则可以在.git/info/exclude文件中添加。这些忽略的文件不会提交到共享库中,因而不会被协作者所共享。
2. 当前工作目录添加文件忽略
对于每一级工作目录,创建一个.gitignore文件,向该文件中添加要忽略的文件或目录。但在创建并编辑这个文件之前,一定要保证要忽略的文件没有添加到git索引中。使用命令git rm --cached filename将要忽略的文件从索引中删除。
--摘抄.gitignore的格式规范
• 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
• 可以使用标准的 glob 模式匹配。
• 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
• 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有 0 到 9 的数字)。
2.1 工作目录的每一层下级目录都可以有一个.gitignore文件,以说明当前目录下需要被git忽略的文件或目录
2.2 .gitignore文件可以被提交到共享库中被协作者共享
3. 全局的.gitignore
可以通过创建~/.gitignore_global并添加到git全局配置以减少每层目录的规则重复定义。使用命令git config --global core.excludesfile ~/.gitignore_global即可
.gitignore_global文件范例
# Compiled source #  
###################  
*.com  
*.class  
*.dll  
*.exe  
*.o  
*.so  
# Packages #  
############  
# it's better to unpack these files and commit the raw source  
# git has its own built in compression methods  
*.7z  
*.dmg  
*.gz  
*.iso  
*.jar  
*.rar  
*.tar  
*.zip  
# Logs and databases #  
######################  
*.log  
*.sql  
*.sqlite  
# OS generated files #  
######################  
.DS_Store  
.DS_Store?  
._*  
.Spotlight-V100  
.Trashes  
Icon?  
ehthumbs.db  
Thumbs.db  

 References:

2. 初次使用git-忽略某些文件, http://www.phperblog.net/?p=173
3. git ignore file, Git增加忽略文件, http://www.cnblogs.com/wucg/archive/2011/08/16/2141647.html

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

余额充值