【git】gitignore

gitignore

git专门有个文件用来管理那些不被纳入版本库的文件,这个文件是 [.gitignore],所有不被包含的都能放进去,但这个是有前提的。

前提

前提是文件如果没被git客户端tracked,那么该文件是可以直接添加到 [.gitignore] 中的;

否则,如果文件先被track到git项目中,那么即使该文件路径被加到 [.gitignore] 中,该文件的修改也是会被git项目跟踪到的。

实践1

模拟已经tracked到项目,查看文件的状态。

$ cat .gitignore
.idea
.env
$ git check-ignore -v .idea
.gitignore:1:.idea    .idea
$ git check-ignore -v .env
[这里显示的是空行]

同样都在gitignore文件中,为什么一个文件检查ignore状态是通过的,一个检查是失败的?

这里就有个区别:因为我们之前提交过[.env]文件,但是未提交过[.idea]。

这里要回顾下前提。

实践2

如果一个文件被tracked,则加入到 [.gitignore] 是失效的。

$ vim .env
[edit some line]
$ git status .env

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   .env
$ git check-ignore -v .env
[这里输出的是空行,表示验证ignore失败]

这里能够看到,一个被tracked到项目中的文件,它的修改是能够被跟踪到的。

实践3

我们要如何操作?才能将该文件包含到gitignore中,从而它的修改删除状态,不会被git所跟踪

$ git rm .env
rm '.env'
$ git status .env
On branch branch_v1
Your branch is up-to-date with 'origin/branch_v1'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    .env

$ git commit -m 'Remove: .env'
[branch_v1 bebee11] Remove: .env
 1 file changed, 7 deletions(-)
 delete mode 100755 .env
$ git push origin branch_v1:branch_v1
.......
$ git check-ignore -v .env
.gitignore:2:.env    .env

最后可以看到,检查ignore状态是成功命中的。

回顾

如果一个文件已经包含在 [.gitignore] 文件中,但是它的修改仍然可以被跟踪到,那么这个文件是被tracked到项目中的,在gitignore包含它之前,它已经提交到项目中了。

解决办法:将该文件从git项目中删除掉即可。

具体操作:

1,将该文件备份到另一文件;

2,操作git命令,将该文件删除掉,然后commit & push到远程;

3,修改 [.gitignore] 文件,把该文件包含进去,然后git commit&push;

4,把1备份的文件重命名会原始文件,原始文件仍然在本地,但是不会被git所管理。

大致操作如下:

1, cp src_file src_backup

2, git rm [src_file]; git commit -m ''; git push origin;

3, vim .gitignore; git commit -m ''; git push origin;

4, cp src_backup src_file; rm src_backup;

更多扩展:

高级-Git官方:https://git-scm.com/docs/gitignore

初级-廖雪峰:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758404317281e54b6f5375640abbb11e67be4cd49e0000

原文地址:https://www.cnblogs.com/helww/p/8119651.html