前言
最近項(xiàng)目開發(fā)中,項(xiàng)目文件目錄變更,重新遷移了項(xiàng)目,結(jié)果要提交幾百上千個(gè)問(wèn)題,瞬間嚇了一筆,中途更改,.gitignore 不起作用導(dǎo)致的。.gitignore 為隱藏文件,顯示隱藏方能看到,或使用終端。百度一番,尋找解決方法,特總結(jié)一下。
解決方法:
原因:說(shuō)在git中會(huì)有緩存,如果某些文件已經(jīng)被納入了版本管理中,就算是在.gitignore中已經(jīng)聲明了忽略路徑也是不起作用的,這時(shí)候我們就應(yīng)該先把本地緩存刪除,然后再進(jìn)行g(shù)it的push,這樣就不會(huì)出現(xiàn)忽略的文件了。git清除本地緩存命令如下:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
但是執(zhí)行第一個(gè)命令就報(bào)錯(cuò)了:

字面意思
the following files have staged content different from both the
file and the HEAD:
與HEAD不同的文件暫存內(nèi)容
"已暫存和修改"的項(xiàng)目的這個(gè)狀態(tài),即:首先對(duì)其進(jìn)行了修改,然后對(duì)其進(jìn)行了暫存和修改.然后又進(jìn)行了修改.
看提示可以使用:
git rm --cached -f <filename>規(guī)避此錯(cuò)誤.
但是通常,當(dāng)我使用git rm --cached取消暫存文件時(shí),不會(huì)出現(xiàn)此錯(cuò)誤.
繼續(xù)執(zhí)行:
git rm --cached -f <Dart_Packages.xml>
報(bào)錯(cuò) zsh: parse error near\n' `
試了幾次錯(cuò)誤的:
git rm --cached -f <project/AumanService/.idea/libraries/Dart_Packages.xml>
git rm --cached -f </Dart_Packages.xml>
百度了才發(fā)現(xiàn),不需要<>,
git rm --cached -f project/AumanService/.idea/libraries/Dart_Packages.xml 128 ?
rm 'project/AumanService/.idea/libraries/Dart_Packages.xml'
終于成功了,同上繼續(xù)執(zhí)行提交。
附:.gitignore文件 資源共用
.gitignore文件是用來(lái)忽略開發(fā)者想忽略掉的文件或目錄,如果沒(méi)有.gitignore文件,可以自己手工創(chuàng)建。在.gitignore文件中的每一行保存一個(gè)匹配的規(guī)則。例如:
“#” 此為注釋 – 將被 Git 忽略,沒(méi)有“”,基本上都一樣,都是#注釋
*.a # 忽略所有 .a 結(jié)尾的文件
!lib.a # 但 lib.a 除外
/TODO # 僅僅忽略項(xiàng)目根目錄下的 TODO 文件,不包括 subdir/TODO
node_modules
.project
.vscode
build/ # 忽略 build/ 目錄下的所有文件
doc/*.txt # 會(huì)忽略 doc/notes.txt,但不包括 doc/server/arch.tx