CONTEXT:
? 在mytest项目里存在mytest/test.sh,并且push到了远程仓库。后面需要不把这个test.sh文件push到远程仓库,需要让test.sh不被git管理。试过在.gitignore文件里添加规则/test.sh 去忽略,但是每次对test.sh修改之后,执行git status 还能看到test.sh的状态,说明没有被git忽略。
git check-ignore -v <filename> 定位到文件在 .gitignore 文件中的具体位置,可以用来查看哪里写了忽略规则把它忽略掉了,另外写相对于 当前工作目录mytest(mytest是项目名) 的相对路径。
- 在.gitignore文件中添加了规则
/test.sh ,忽略这个shell脚本。在.gitignore中写规则的时候写的是绝对路径,根目录对应的是mytest项目文件夹。
input:
git check-ignore -v ./test.sh
output:
.gitignore:12:/test.sh ./test.sh
- 在.gitignore文件中没有添加规则
/Cargo.toml
input:
git check-ignore -v ./Cargo.toml
output为空
-
查看当前项目里哪些文件/文件夹被git忽略管理 git status --ignorede
最终解决方案
[xxx@ubuntu mytest]$ git status //在.gitignore文件中添加了规则/test.sh后,对test.sh修改后,执行git status
no changes added to commit (use "git add" and/or "git commit -a")
[xxx@ubuntu mytest]$ git rm --cached ./test.sh //关键的一步
rm 'test.sh'
[xxx@ubuntu mytest]$ git status
[xxx@ubuntu mytest]$ git status //对test.sh文件做修改,然后再执行git status
.gitignore语法参考
|