gitignore更新以后在項目中未生效的解決辦法

.gitignore中已經標明忽略的文件目錄下的文件,git push的時候還會出現(xiàn)在push的目錄中,或者用git status查看狀態(tài),想要忽略的文件還是顯示被追蹤狀態(tài)。
原因是因為在git忽略目錄中,新建的文件在git中會有緩存,如果某些文件已經被納入了版本管理中,就算是在.gitignore中已經聲明了忽略路徑也是不起作用的,
這時候我們就應該先把本地緩存刪除,然后再進行git的提交,這樣就不會出現(xiàn)忽略的文件了。

解決方法: git清除本地緩存(改變成未track狀態(tài)),然后再提交:
[root@kevin ~]# git rm -r --cached .
[root@kevin ~]# git add .
[root@kevin ~]# git commit -m 'update .gitignore'
[root@kevin ~]# git push -u origin master

需要特別注意的是:
1).gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。
2)想要.gitignore起作用,必須要在這些文件不在暫存區(qū)中才可以,.gitignore文件只是忽略沒有被staged(cached)文件,
對于已經被staged文件,加入ignore文件時一定要先從staged移除,才可以忽略。

第二種方法:(推薦)
在每個clone下來的倉庫中手動設置不要檢查特定文件的更改情況。
[root@kevin ~]# git update-index --assume-unchanged PATH //在PATH處輸入要忽略的文件

在使用.gitignore文件后如何刪除遠程倉庫中以前上傳的此類文件而保留本地文件
在使用git和github的時候,之前沒有寫.gitignore文件,就上傳了一些沒有必要的文件,在添加了.gitignore文件后,就想刪除遠程倉庫中的文件卻想保存本地的文件。這時候不可以直接使用"git rm directory",這樣會刪除本地倉庫的文件。可以使用"git rm -r –cached directory"來刪除緩沖,然后進行"commit"和"push",這樣會發(fā)現(xiàn)遠程倉庫中的不必要文件就被刪除了,以后可以直接使用"git add -A"來添加修改的內容,上傳的文件就會受到.gitignore文件的內容約束。

額外說明:git庫所在的文件夾中的文件大致有4種狀態(tài)

Untracked:

未跟蹤, 此文件在文件夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀態(tài)變?yōu)镾taged.

Unmodify:
文件已經入庫, 未修改, 即版本庫中的文件快照內容與文件夾中完全一致. 這種類型的文件有兩種去處, 如果它被修改,
而變?yōu)镸odified. 如果使用git rm移出版本庫, 則成為Untracked文件

Modified:
文件已修改, 僅僅是修改, 并沒有進行其他的操作. 這個文件也有兩個去處, 通過git add可進入暫存staged狀態(tài),
使用git checkout 則丟棄修改過, 返回到unmodify狀態(tài), 這個git checkout即從庫中取出文件, 覆蓋當前修改

Staged:
暫存狀態(tài). 執(zhí)行git commit則將修改同步到庫中, 這時庫中的文件和本地文件又變?yōu)橐恢? 文件為Unmodify狀態(tài).
執(zhí)行git reset HEAD filename取消暫存, 文件狀態(tài)為Modified

Git 狀態(tài) untracked 和 not staged的區(qū)別
1)untrack 表示是新文件,沒有被add過,是為跟蹤的意思。
2)not staged 表示add過的文件,即跟蹤文件,再次修改沒有add,就是沒有暫存的意思

文章出處:https://www.cnblogs.com/rainbowk/p/10932322.html

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容