我有一个已经初始化的Git存储库,我添加了一个.gitignore文件。我如何刷新文件索引,以便忽略我想要忽略的文件?
当前回答
没有一个答案对我有效。
相反:
将文件移出git控制的目录检查git中的删除将文件移回git控制的目录
将文件移回后,git将忽略它。也适用于目录!
其他回答
如果.gitignore似乎没有忽略未跟踪的文件,还需要记住的一点是,您不应该在忽略的行上有注释。所以这没关系
# ignore all foo.txt, foo.markdown, foo.dat, etc.
foo*
但这行不通:
foo* # ignore all foo.txt, foo.markdown, foo.dat, etc.
.gitignore将后一种情况解释为“忽略名为“foo*#忽略所有foo.txt、foo.markdown、foo.dat等”的文件,当然,您没有。
如果您试图忽略对存储库中已跟踪的文件所做的更改(例如,您需要为本地环境更改的dev.properties文件,但您永远不想签入这些更改),那么您要做的是:
git update-index --assume-unchanged <file>
如果你想再次开始跟踪更改
git update-index --no-assume-unchanged <file>
参见git更新索引(1)手册页。
如果您需要在git重置后继续使用,请查看更新索引的跳过工作树和无跳过工作树选项(通过)
更新:由于人们一直在问,这里有一个方便的(并在下面评论后进行了更新)别名,用于查看本地工作区中哪些文件当前被“忽略”(--假设未更改)
$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"
如果文件已经在版本控制中,则需要手动删除它们。
要取消跟踪已添加/初始化到存储库的单个文件,即停止跟踪该文件,但不从系统中删除它,请使用:git rm--缓存文件名
要取消跟踪.gitignore中的每个文件,请执行以下操作:
首先提交所有未完成的代码更改,然后运行以下命令:
git rm -r --cached .
这将从索引(临时区域)中删除所有更改的文件,然后只需运行:
git add .
提交:
git commit -m ".gitignore is now working"
要撤消git rm--缓存的文件名,请使用git add filename。
确保在运行gitadd之前提交所有重要的更改。否则,您将丢失对其他文件的任何更改。
请小心,当您将其推送到存储库并从其他位置拉到仍在跟踪这些文件的状态时,这些文件将被删除
这里没有提到的另一个问题是,如果你已经在Windows记事本中创建了.gitignore,我发现它在其他平台上看起来像是胡言乱语。关键是确保在记事本中将编码设置为ANSI(或者像我一样在linux上创建文件)。
根据我的回答:https://stackoverflow.com/a/11451916/406592
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别