gitignore 文件

来源:互联网 发布:dnf盒子换装网络中断 编辑:程序博客网 时间:2024/05/22 23:58

利用.gitignore过滤文件,如编译过程中的中间文件,日志等等,这些文件不需要被追踪管理。

现象

在.gitignore添加file1文件,以过滤该文件,但是通过Git status查看仍显示file1文件的状态。

原因

在git库中已存在了这个文件,之前push提交过该文件。

.gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不起作用了

解决

需要在git库中删除该文件,并更新,修改ignore文件,并提交。再出现需要过滤的文件时候,

然后git status查看状态,file1文件不再显示状态。




.gitignore文件中的每一行保存一个匹配的规则例如:

1
2
3
4
5
6
7
# 此为注释 – 将被 Git 忽略
 
*.a       # 忽略所有 .a 结尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt



git update-index --assume-unchanged的作用:

应用了该标识之后,Git 停止查看工作区文件可能发生的改变,所以你必须 手动 重置该标识以便 Git 知道你想要恢复对文件改变的追踪。当你工作在一个大型项目中,这在文件系统的 lstat 系统调用非常迟钝的时候会很有用。

我们知道 Git 不仅仅是用来做代码版本管理的,很多其他领域的项目也会使用 Git。比如说我公司曾经一个客户的项目涉及到精密零件图纸文档的版本管理,他们也用 Git。有一种使用场景是对一些体积庞大的文件进行修改,但是每一次保存 Git 都要计算文件的变化并更新工作区,这在硬盘慢的时候延迟卡顿非常明显。

git update-index --assume-unchanged 的真正用法是这样的:

  1. 你正在修改一个巨大的文件,你先对其 git update-index --assume-unchanged,这样 Git 暂时不会理睬你对文件做的修改;
  2. 当你的工作告一段落决定可以提交的时候,重置改标识:git update-index --no-assume-unchanged,于是 Git 只需要做一次更新,这是完全可以接受的了;
  3. 提交+推送。


git rm与git rm --cached

当我们需要删除暂存区分支上的文件, 同时工作区也不需要这个文件了, 可以使用

1 git rm file_path2 git commit -m 'delete somefile'3 git push

当我们需要删除暂存区分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用

git rm --cached file_pathgit commit -m 'delete remote somefile'git push







原创粉丝点击