我有一个已经初始化的Git存储库,我添加了一个.gitignore文件。我如何刷新文件索引,以便忽略我想要忽略的文件?
当前回答
在我的服务器linux服务器上(在我的本地dev mac上不是真的),只要我不添加星号,目录就会被忽略:
www/档案/*
我不知道为什么,但这让我放松了几个小时,所以我想分享。。。
其他回答
如果您试图忽略对存储库中已跟踪的文件所做的更改(例如,您需要为本地环境更改的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 repo中删除每个文件。
Stackoverflow救援。。。如何还原“git rm-r”?
git reset HEAD
做到了这一点,因为我有未提交的本地文件,我不想覆盖这些文件。
正如dav_i所说,为了将文件保存在repo中,并在不创建额外提交的情况下将其从更改中删除,您可以使用:
git update-index --assume-unchanged filename
如果您想停止跟踪文件而不从本地系统中删除文件,我更喜欢忽略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
谢谢
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?
- 如何移除SSH密钥?