我把以前由 Git 跟踪的文件放在.gitignore 列表中. 但是,文件在编辑后仍然显示在 git 状态。
当前回答
这就是我如何解决我的问题:
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD git push
在此,我们基本上正在试图在以前的任务中重写该特定文件的历史。
有关更多信息,您可以在此处参阅过滤器分支的男性页面。
来源:从存储库中删除敏感数据 - 使用过滤器分支
来源:Git:如何删除错误的大文件
其他回答
您想要跟踪很多文件,或者您更新了您的.gitignore 文件
来源: Untrack 已添加到基于.gitignore 的 Git 存储库
假设你已经添加 / 订购了一些文件到你的 Git 存储库,然后你将它们添加到你的.gitignore 文件;这些文件将仍然存在于你的存储库指数。
步骤1:承诺所有的变化
在进行之前,请确保您的所有更改都完成,包括您的.gitignore 文件。
步骤2:从存储库中删除一切
要清理您的存储库,请使用:
git rm -r --cached .
如果你想先尝试它做什么,添加 -n 或 - 干燥的旗帜来测试事情。
步骤3:阅读一切
git add .
git commit -m ".gitignore fix"
您的存储库很干净:)
将更改推到您的远程,以便看到更改在那里有效。
特别是对于基于 IDE 的文件,我使用以下文件:
例如,对于 slnx.sqlite 文件,我刚刚完全解除它如下:
git rm {PATH_OF_THE_FILE}/slnx.sqlite -f
git commit -m "remove slnx.sqlite"
请记住,其中一些文件存储一些本地用户设置和项目偏好(类似于您打开的文件)。所以每次您浏览或在您的 IDE 中进行一些更改,该文件会被更改,因此它会检查并显示为未订购的更改。
移动或复制文件到一个安全的位置,所以你不会失去它。
文件仍然会出现,如果你转到以前的任务之一,或另一个分支,它没有被删除. 但是,在所有未来的任务,你不会再看到文件. 如果文件在 Git 忽略,那么你可以将其返回文件夹, Git 不会看到它。
这就是我如何解决我的问题:
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD git push
在此,我们基本上正在试图在以前的任务中重写该特定文件的历史。
有关更多信息,您可以在此处参阅过滤器分支的男性页面。
来源:从存储库中删除敏感数据 - 使用过滤器分支
来源:Git:如何删除错误的大文件
更新您的.gitignore 文件 - 例如,添加一个文件夹,你不想跟踪到.gitignore. git rm -r --cached. - 删除所有跟踪的文件,包括所需和不需要的. 您的代码将是安全的,只要你保存了本地. git 添加. - 所有文件将返回,除了那些在.gitignore.
请点击 @AkiraYamamoto 指向我们正确的方向。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别