我把以前由 Git 跟踪的文件放在.gitignore 列表中. 但是,文件在编辑后仍然显示在 git 状态。
当前回答
其他回答
我知道这个答案已经迟到了很多年,但是我决定我想在注意到可能有不同的答案后做出贡献,取决于用户想要的结果。
如何强迫Git完全忘记这一点?
这取决于下列哪个是所需的结果:
停止跟踪文件并将其从存储库中删除,或停止跟踪文件,而不会从存储库中删除(可能其他合作伙伴可以下载)
因为(一),解决方案就像上面的马特的答案一样;因为(二),请参见康斯坦丁的答案。
来源: https://stackabuse.com/git-stop-tracking-file-after-adding-to-gitignore/
我喜欢JonBrave的答案,但我有足够的工作目录,承诺 - 一个让我有点害怕,所以这里是我做的事情:
git config --global alias.exclude-ignored '!git ls-files -z --ignored --exclude-standard | xargs -0 git rm -r --cached && git ls-files -z --ignored --exclude-standard | xargs -0 git stage && git stage .gitignore && git commit -m "new gitignore and remove ignored files from index"'
打破它:
git ls-files -z --ignored --exclude-standard | xargs -0 git rm -r --cached
git ls-files -z --ignored --exclude-standard | xargs -0 git stage
git stage .gitignore
git commit -m "new gitignore and remove ignored files from index"
删除被忽略的文件从索引阶段.gitignore 和您刚刚删除的文件承诺
做下列步骤严肃,你会好。
从目录/存储中删除错误添加的文件. 您可以使用“rm -r”命令(为Linux)或通过浏览目录删除它们. 或者将它们移动到您的计算机上的另一个位置. (您可能需要关闭 IDE 如果运行移动/删除.) 现在将文件 / 目录添加到.gitignore 文件并保存它. 现在通过使用这些命令从 Git 存储中删除它们(如果有)
下面的命令系列将从 Git 索引中删除所有项目(不是工作目录或本地存储库),然后更新 Git 索引,同时遵守 Git 忽略。
首先:
git rm -r --cached .
git add .
然后:
git commit -am "Remove ignored files"
或者作为一个单线:
git rm -r --cached . && git add . && git commit -am "Remove ignored files"
什么不为我工作
(在Linux下),我想使用这里的帖子,建议Ls - 文件 - 被忽略 - 排除 - 标准 - xargs git rm -r - 被捕的方法。
git ls-files --ignored --exclude-standard | xargs -d"\n" git rm --cached
git ls-files --ignored --exclude-standard | sed 's/.*/"&"/' | xargs git rm -r --cached
处理此情况(获取未找到文件的错误)。
所以我提供
git ls-files -z --ignored --exclude-standard | xargs -0 git rm -r --cached
git commit -am "Remove ignored files"
这使用 -z 对 ls 文件的论点,以及 -0 对 xargs 的论点,以便在文件名中安全/正确地输入“不良”字符。
在 git-ls-file(1)的手册页面上,它说:
当 -z 选项未使用时,在 pathnames 中,TAB、LF 和 backslash 字符分别以 \t、 \n 和 \\ 表示。
所以我认为我的解决方案是必要的,如果有这些字符中的任何一个字符。
推荐文章
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '
- 如何拉特定的目录与git
- 本地存储库中的文件与源文件之间的差异
- 将Git存储库内容移动到另一个存储库,保存历史记录
- 如何在GitHub上创建自己的存储库?