我有一个已经初始化的Git存储库,我添加了一个.gitignore文件。我如何刷新文件索引,以便忽略我想要忽略的文件?
当前回答
要取消跟踪已添加/初始化到存储库的单个文件,即停止跟踪该文件,但不从系统中删除它,请使用:git rm--缓存文件名
要取消跟踪.gitignore中的每个文件,请执行以下操作:
首先提交所有未完成的代码更改,然后运行以下命令:
git rm -r --cached .
这将从索引(临时区域)中删除所有更改的文件,然后只需运行:
git add .
提交:
git commit -m ".gitignore is now working"
要撤消git rm--缓存的文件名,请使用git add filename。
确保在运行gitadd之前提交所有重要的更改。否则,您将丢失对其他文件的任何更改。
请小心,当您将其推送到存储库并从其他位置拉到仍在跟踪这些文件的状态时,这些文件将被删除
其他回答
感谢你的回答,我能够写下这个小单行来改进它。我在.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 repo中删除每个文件。
Stackoverflow救援。。。如何还原“git rm-r”?
git reset HEAD
做到了这一点,因为我有未提交的本地文件,我不想覆盖这些文件。
没有一个答案对我有效。
相反:
将文件移出git控制的目录检查git中的删除将文件移回git控制的目录
将文件移回后,git将忽略它。也适用于目录!
要取消跟踪已添加/初始化到存储库的文件,即停止跟踪该文件,但不从系统中删除它,请使用:gitrm--缓存文件名
我遵循了这些步骤
git rm -r --cached .
git add .
git reset HEAD
之后,git删除所有应该忽略的文件(在我的例子中是*.swp)。
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?
- 如何移除SSH密钥?