这个问题在这里已有答案:
起源
答案:
去追踪一个 单 已经添加/初始化到您的存储库的文件, 即,停止跟踪文件但不从系统中删除它: git rm --cached filename
去追踪 一切 现在在你的文件 .gitignore
:
首先提交任何未完成的代码更改,然后,运行此命令:
git rm -r --cached .
这将删除任何已更改的文件 指数(暂存区),然后运行:
git add .
承诺:
git commit -m ".gitignore is now working"
撤销 git rm --cached filename
, 使用 git add filename
。
确保在运行之前提交所有重要更改
git add .
否则,您将丢失对其他文件的任何更改。
答案:
去追踪一个 单 已经添加/初始化到您的存储库的文件, 即,停止跟踪文件但不从系统中删除它: git rm --cached filename
去追踪 一切 现在在你的文件 .gitignore
:
首先提交任何未完成的代码更改,然后,运行此命令:
git rm -r --cached .
这将删除任何已更改的文件 指数(暂存区),然后运行:
git add .
承诺:
git commit -m ".gitignore is now working"
撤销 git rm --cached filename
, 使用 git add filename
。
确保在运行之前提交所有重要更改
git add .
否则,您将丢失对其他文件的任何更改。
如果您试图忽略对已在存储库中跟踪的文件的更改(例如,您需要为本地环境更改的dev.properties文件,但您永远不想检查这些更改),而不是您想要执行的操作是:
git update-index --assume-unchanged <file>
如果您想再次开始跟踪更改
git update-index --no-assume-unchanged <file>
还看看了 skip-worktree
和 no-skip-worktree
update-index的选项,如果你需要它来保持git-reset(通过)
更新: 由于人们一直在问,这是一个方便的(以及下面评论的更新)别名,用于查看当前工作区中当前“忽略”( - 保持不变)的文件
$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"
要取消已经添加/初始化到存储库的文件,即停止跟踪文件但不从系统中删除它: git rm --cached filename
是的 - .gitignore
系统只忽略当前不受git版本控制的文件。
即如果你已经添加了一个名为的文件 test.txt
运用 git-add
,然后添加 test.txt
至 .gitignore
仍然会导致更改 test.txt
被跟踪。
你必须这样做 git rm test.txt
首先并承诺改变。只有这样才会改变 test.txt
被忽略
删除.gitignore中的尾部空格
另外,请确保.gitignore中没有尾随空格。我得到了这个问题,因为我正在寻找答案,然后我有一种有趣的感觉,我应该打开编辑器,而不仅仅是cat'ing .gitignore。从末尾移除了一个额外的空间 噗 它现在有效:)
我按照这些步骤
git rm -r --cached .
git add .
git reset HEAD
之后,git删除应忽略的所有文件(在我的情况下为* .swp)。
如果要停止跟踪文件而不删除本地系统中的文件,我更喜欢忽略该文件 config/database.yml
文件。只需尝试:
git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.
现在,将此文件添加到 .gitignore
提交并提交更改。从现在开始,对config / database.yml所做的任何更改都不会被git跟踪。
$ echo config/database.yml >> .gitignore
谢谢