為什麼我的 gitignore 不生效

2021-10-10 02:38:38 字數 1806 閱讀 8769

專案有一些開發時用的配置檔案,需要用到所以不能刪,但是卻不想提交改動。

理所當然地想到將它加入.gitignore規則中,但是我的改動還是被git**捉到了,為啥呢?

gitignore - specifies intentionally untracked files to ignore

官方文件給出了標準答案,原來.gitignore只對未跟蹤的檔案起作用!

已跟蹤的檔案是指那些被納入了版本控制的檔案,在上一次提交中有它們的記錄。那麼未跟蹤檔案就是指那些從沒提交過的檔案。

因為我之前已經使用提交過了,所以.gitignore也救不了我 。

那我現在已經覆水難收的情況下,想要忽略 index.scss 該怎麼做?

【我】:我的目的是在倉庫裡面保留 index.scss,但是要所有人忽略它的改動。你能做到嗎?

【git】:我做不到,我是個版本控制的倉庫,我要為所有檔案的版本負責,而不是你儲存檔案的中轉站!但是你可以這樣:

讓我們來看看根據 git 提供的思路,如何實踐。

git rm --cached src/index.scss 

git add src/index.scss

git commit -m "ignore index.scss"

在你的電腦進行以上操作後,index.scss 正式脫離了版本管理的管制。git rm --cached會保留你本機的檔案,但是會從版本庫裡面刪除。

因為其他主機(您同事的電腦等等)在git pull你以上的改動時,index.scss 會被刪除,所以 index.scss 需要加回來。

可以手動加回來,也可以使用構建工具初始化自動生成 index.scss 檔案。

git update-index --assume-unchanged src/index.scss

git update-index --assume-unchanged src/index.scss

git update-index為乙個單獨檔案建立暫存區,--assume-unchanged通知 git 不要再監控這個檔案的改動了。

合起來的意思是:我單獨把你拎出來,暫時先跟蹤你。因為命令只對當前工作區生效,同理其他主機也要進行同樣的操作。

方案(2)非常純粹,一招鮮吃遍天。

但是它容易出錯,如果某個同事忘記執行這條指令,將 index.scss 提交到了版本庫,

那麼其他人都需要一起——重新執行命令,再次讓版本庫忽略 index.scss。

過來人告訴你,這方法真的不好維護。

使用方案(1),因為檔案已經刪了,且已經將其加入到了.gitignore,後續的提交都不會跟蹤這份新的 index.scss 檔案。同事忘不忘記操作也只是影響他自己,而且只需一次操作,無後顧之憂。

我為什麼不喝光明牛奶?

今天的南方 又是很讓人鬱悶的一期,看看這張報紙,覺著現在的人簡直不能生存,是否該報紙琢磨著讓人們都鬱悶死,以減輕人口壓力啊,呵呵,玩笑。為什麼提起這各報紙呢,是因為我常看,今天看到一條訊息讓我印證了2年前的一件事情。該報今天報道光明牛奶在鄭州的分公司居然用過期牛奶重新加工,再次發運出去。這一點我非常...

為什麼我不推薦敏捷開發?

當專案成員越多,我越不推薦敏捷開發,原因在於 當連自己要做什麼事 為什麼這樣做 這樣做為了解決什麼問題 都搞不清楚前,就跳下去玩敏捷開發,那和比通靈還慘,通靈起碼還有個目標物在前面,搞不清楚狀況的人只能陪他跳世界迷霧開地圖了 敏捷開發 mba智庫百科 最下方有段 對敏捷開發的誤解 可順便參考 敏捷軟...

我為什麼要累死自己不掙錢?

老師對我們想做程式設計師的同學說,往屆做電子商務的,一般乙個月也能拿三四千,多的到七八千,工作也很輕鬆。而做程式設計師的乙個月最多的 也就三四千,而且他們的鴨梨好大。沒做今年就變老了。老師說完後補充一句 為什麼要累死自己不掙錢呢?我想做程式設計師,所以我申請了加入黑馬訓練營。我不是沒有選擇或者很少選...