如何从Git存储库中删除包含文件的单个目录?
当前回答
我的一位同事建议BFG Repo Cleaner,我认为它很强大。它不仅可以删除不需要的数据,还可以清除存储库中的任何相关提交信息。
其他回答
从Git和本地删除目录
使用两个目录签出“master”:
git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)
从Git中删除目录,但不是本地目录
要从Git中删除此目录,但不将其从文件系统(本地)中完全删除,请执行以下操作:
git rm -r --cached myFolder
这两个答案的组合对我有用
git rm -r one-of-the-directories
git commit . -m "Remove duplicated directory"
git push
如果仍然显示一些警告,请手动删除文件
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push
如果由于某种原因,karmakaze所说的不起作用,您可以尝试使用或使用文件系统浏览器(例如,在Windows文件资源管理器中)删除您想要的目录。删除目录后,发出命令:git add-A然后gitcommit-m'删除目录'然后git推送原始主机。
我的一位同事建议BFG Repo Cleaner,我认为它很强大。它不仅可以删除不需要的数据,还可以清除存储库中的任何相关提交信息。
如果删除目录中的文件(其他答案解释为git-rm),那么就git而言,该目录将不再存在。您不能提交一个空目录,也不能删除一个。
这与subversion不同,在subversion中,您必须显式地svn rm emptyfolder/,这也是git的手册页将自己描述为“愚蠢的内容跟踪器”的原因
关于“如何将空目录添加到git存储库”的回答链接到此主题的常见问题解答:
目前git索引的设计(临时区域)仅允许文件被列入名单,没有人能胜任进行更改以允许清空目录已经足够关心这种情况可以补救。自动添加目录在其中添加文件时。那个就是,永远不必添加目录到存储库,并且不被跟踪他们自己。你可以说“gitadd<dir>”将在其中添加文件。如果您确实需要一个目录存在于签出中,您应该创建gitignore适用于这一目的;你可以让它空着,或填写文件的名称期望显示在目录中。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别