您的位置:首页 > 其它

欢迎使用CSDN-markdown编辑器

2017-01-24 21:44 127 查看
用git提交的时候有很多不必要的文件也被提交了,现在就想,有没有一中办法吧不必要的文件进行忽略掉,百度了一下,找到了,就是新建.gitignore然后再里面声明要忽略的文件夹或者文件就可以了,不过麻烦又来了,因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按照linux的方式来新建.gitignore文件。具体步骤如下:

1. 在需要创建 .gitignore 文件的文件夹, 右键选择

Git Bash 进入命令行,进入项目所在目录。

2. 输入 touch .gitignore 在文件夹就生成了一个“.gitignore”文件。

然后在”.gitignore” 文件里输入你要忽略的文件夹及其文件就可以了。

3.然后用编辑器打开这个文件进行编辑就行了。如果你很牛,熟悉linux下的vi编辑的命令,也可以用命令来声明规则额。在这里就不说了额,

附: vi编辑器的怎么换行呢?

总结:vi保存退出命令x和wq的区别

搜集:不会linux下vi命令,伤不起啊

4.然后就写规则来操作要忽略的文件了。.gitignore文件过滤有两种模式,开放模式和保守模式

4.1开放模式负责设置过滤哪些文件和文件夹

eg:

过滤文件夹设置:

/mtk/ 表示过滤这个文件夹

过滤文件设置

指定过滤某种类型的文件:

*.zip

*.rar

*.via

*.tmp

*.err

指定过滤某个文件:

/mtk/do.c

/mtk/if.h

4.2 b保守模式负责设置哪些文件不被过滤,也就是哪些文件要被跟踪。

跟踪某个文件夹

!/plutommi/mmi

跟踪某类文件

!*.c

!*.h

跟踪某个指定文件

!/plutommi/mmi/mmi_features.h

4.3.配置.gitignore 的简易原则

采用共享模式与保守模式结合配置的办法。eg:一个文件夹下有很多文件夹和文件,而我只想跟踪其中的一个文件,这样设置就可以满足这种情况,先用共享模式把整个目录 都设置为不跟踪,然后再用保守模式把这个文件夹中想要跟踪的文件设置为被跟踪,配置很简单,就可以跟踪想要跟踪的文件。

在Git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .gitignore 文件的方法。这个文件每一行保存了一个匹配的规则例如:

`#此为注释 – 将被 Git 忽略

*.a       # 忽略所有 .a 结尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
这样设置了以后 所有的 .pyc 文件都不会添加到版本库中去。
另外 git 提供了一个全局的 .gitignore,你可以在你的用户目录下创建 ~/.gitignoreglobal 文件,以同样的规则来划定哪些文件是不需要版本控制的。


需要执行 git config –global core.excludesfile ~/.gitignoreglobal来使得它生效。

其他的一些过滤条件

* ?:代表任意的一个字符

* *:代表任意数目的字符

* {!ab}:必须不是此类型

* {ab,bb,cx}:代表ab,bb,cx中任一类型即可

* [abc]:代表a,b,c中任一字符即可

* [ ^abc]:代表必须不是a,b,c中任一字符

由于git不会加入空目录,所以下面做法会导致tmp不会存在 tmp/* //忽略tmp文件夹所有文件

改下方法,在tmp下也加一个.gitignore,内容为

*

!.gitignore

还有一种情况,就是已经commit了,再加入gitignore是无效的,所以需要删除下缓存

git rm -r –cached ignore_file

注意: .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。

git update-index –assume-unchanged PATH 在PATH处输入要忽略的文件。

另外 git 还提供了另一种 exclude 的方式来做同样的事情,不同的是 .gitignore 这个文件本身会提交到版本库中去。用来保存的是公共的需要排除的文件。而 .git/info/exclude 这里设置的则是你自己本地需要排除的文件。 他不会影响到其他人。也不会提交到版本库中去。

.gitignore 还有个有意思的小功能, 一个空的 .gitignore 文件 可以当作是一个 placeholder 。当你需要为项目创建一个空的 log 目录时, 这就变的很有用。 你可以创建一个 log 目录 在里面放置一个空的 .gitignore 文件。这样当你 clone 这个 repo 的时候 git 会自动的创建好一个空的 log 目录了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: