我有一个已经初始化的Git存储库,我添加了一个.gitignore文件。我如何刷新文件索引,以便忽略我想要忽略的文件?
当前回答
感谢你的回答,我能够写下这个小单行来改进它。我在.gitignore和repo上运行了它,没有任何问题,但如果有人看到任何明显的问题,请评论。这应该是git rm-r--cached from.gitignore:
cat $(git rev-parse --show-toplevel)/.gitIgnore | sed "s/\/$//" | grep -v "^#" | xargs -L 1 -I {} find $(git rev-parse --show-toplevel) -name "{}" | xargs -L 1 git rm -r --cached
注意,你会得到很多致命的错误:pathspec“<pathspec>”与任何文件都不匹配。这只是针对尚未修改的文件。
其他回答
复杂的答案无处不在!
只需使用以下内容
git rm -r --cached .
它将从源文件中删除您试图忽略的文件,而不是从计算机上的主文件中删除!
之后,只需提交并推送!
如果您想停止跟踪文件而不从本地系统中删除文件,我更喜欢忽略config/database.yml文件。只需尝试:
git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.
现在,将此文件添加到.gitignore文件并提交更改。从现在起,git不会跟踪对config/database.yml所做的任何更改。
$ echo config/database.yml >> .gitignore
谢谢
是的。gitignore系统只忽略当前不受git版本控制的文件。
也就是说,如果您已经使用gitadd添加了一个名为test.txt的文件,那么将test.txt添加到.gitignore仍然会导致跟踪对test.txt的更改。
您必须首先获取rm test.txt并提交更改。只有这样,才会忽略对test.txt的更改。
要取消跟踪已添加/初始化到存储库的单个文件,即停止跟踪该文件,但不从系统中删除它,请使用:git rm--缓存文件名
要取消跟踪.gitignore中的每个文件,请执行以下操作:
首先提交所有未完成的代码更改,然后运行以下命令:
git rm -r --cached .
这将从索引(临时区域)中删除所有更改的文件,然后只需运行:
git add .
提交:
git commit -m ".gitignore is now working"
要撤消git rm--缓存的文件名,请使用git add filename。
确保在运行gitadd之前提交所有重要的更改。否则,您将丢失对其他文件的任何更改。
请小心,当您将其推送到存储库并从其他位置拉到仍在跟踪这些文件的状态时,这些文件将被删除
我发现了一个奇怪的问题。gitignore。一切都很到位,看起来很正确。我的.gitignore被“忽略”的唯一原因是,行结尾是Mac格式(\r)。因此,在保存了具有正确行结尾的文件(在vi中使用:set ff=unix)之后,一切都变得非常迷人!
推荐文章
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 为什么要把Gradle Wrapper提交给VCS?
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件
- 清除JavaScript中的缓存
- Git错误:遇到7个文件应该是指针,但不是