我有一个已经初始化的Git存储库,我添加了一个.gitignore文件。我如何刷新文件索引,以便忽略我想要忽略的文件?
当前回答
如果.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等”的文件,当然,您没有。
其他回答
这里没有提到的另一个问题是,如果你已经在Windows记事本中创建了.gitignore,我发现它在其他平台上看起来像是胡言乱语。关键是确保在记事本中将编码设置为ANSI(或者像我一样在linux上创建文件)。
根据我的回答:https://stackoverflow.com/a/11451916/406592
如果您想停止跟踪文件而不从本地系统中删除文件,我更喜欢忽略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
谢谢
如果需要停止跟踪大量被忽略的文件,可以组合一些命令:
git ls files-i--排除标准|xargs-L1 git rm--缓存
这将停止跟踪被忽略的文件。如果您想从文件系统中删除文件,请不要使用--cached选项。您还可以指定文件夹来限制搜索,例如:
git-ls文件-i--排除标准--${FOLDER}| xargs-L1 git rm
如果您试图忽略对存储库中已跟踪的文件所做的更改(例如,您需要为本地环境更改的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 -r --cached .
git add .
git reset HEAD
之后,git删除所有应该忽略的文件(在我的例子中是*.swp)。
推荐文章
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 为什么要把Gradle Wrapper提交给VCS?
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件
- 清除JavaScript中的缓存
- Git错误:遇到7个文件应该是指针,但不是
- GitHub克隆与OAuth访问令牌