天天看點

Git忽略規則(.gitignore配置)不生效原因和解決Git忽略規則(.gitignore配置)不生效原因和解決

Git忽略規則(.gitignore配置)不生效原因和解決

參考文章:

https://www.cnblogs.com/kevingrace/p/5690241.html

https://www.cnblogs.com/rainbowk/p/10932322.html

解決方法1

.gitignore中已經标明忽略的檔案目錄下的檔案,git push的時候還會出現在push的目錄中,或者用git status檢視狀态,想要忽略的檔案還是顯示被追蹤狀态。

原因是因為在git忽略目錄中,建立的檔案在git中會有緩存,如果某些檔案已經被納入了版本管理中,就算是在.gitignore中已經聲明了忽略路徑也是不起作用的,

這時候我們就應該先把本地緩存删除,然後再進行git的送出,這樣就不會出現忽略的檔案了。

解決方法: git清除本地緩存(改變成未track狀态),然後再送出:

[[email protected] ~]# git rm -r --cached .
[[email protected] ~]# git add .
[[email protected] ~]# git commit -m 'update .gitignore'
[[email protected] ~]# git push -u origin master
           

需要特别注意的是:

1).gitignore隻能忽略那些原來沒有被track的檔案,如果某些檔案已經被納入了版本管理中,則修改.gitignore是無效的。

2)想要.gitignore起作用,必須要在這些檔案不在暫存區中才可以,.gitignore檔案隻是忽略沒有被staged(cached)檔案,

對于已經被staged檔案,加入ignore檔案時一定要先從staged移除,才可以忽略。

解決方法2

第二種方法:(推薦)

在每個clone下來的倉庫中手動設定不要檢查特定檔案的更改情況。

[[email protected] ~]# git update-index --assume-unchanged PATH                  //在PATH處輸入要忽略的檔案
           

在使用.gitignore檔案後如何删除遠端倉庫中以前上傳的此類檔案而保留本地檔案

在使用git和github的時候,之前沒有寫.gitignore檔案,就上傳了一些沒有必要的檔案,在添加了.gitignore檔案後,就想删除遠端倉庫中的檔案卻想儲存本地的檔案。這時候不可以直接使用"git rm directory",這樣會删除本地倉庫的檔案。可以使用"git rm -r –cached directory"來删除緩沖,然後進行"commit"和"push",這樣會發現遠端倉庫中的不必要檔案就被删除了,以後可以直接使用"git add -A"來添加修改的内容,上傳的檔案就會受到.gitignore檔案的内容限制。

額外說明:git庫所在的檔案夾中的檔案大緻有4種狀态

Untracked:

未跟蹤, 此檔案在檔案夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀态變為Staged.

Unmodify:

檔案已經入庫, 未修改, 即版本庫中的檔案快照内容與檔案夾中完全一緻. 這種類型的檔案有兩種去處, 如果它被修改,

而變為Modified. 如果使用git rm移出版本庫, 則成為Untracked檔案

Modified:

檔案已修改, 僅僅是修改, 并沒有進行其他的操作. 這個檔案也有兩個去處, 通過git add可進入暫存staged狀态,

使用git checkout 則丢棄修改過, 傳回到unmodify狀态, 這個git checkout即從庫中取出檔案, 覆寫目前修改

Staged:

暫存狀态. 執行git commit則将修改同步到庫中, 這時庫中的檔案和本地檔案又變為一緻, 檔案為Unmodify狀态.

執行git reset HEAD filename取消暫存, 檔案狀态為Modified

Git 狀态 untracked 和 not staged的差別

1)untrack 表示是新檔案,沒有被add過,是為跟蹤的意思。

2)not staged 表示add過的檔案,即跟蹤檔案,再次修改沒有add,就是沒有暫存的意思