如何从Git存储库中删除包含文件的单个目录?


当前回答

我的一位同事建议BFG Repo Cleaner,我认为它很强大。它不仅可以删除不需要的数据,还可以清除存储库中的任何相关提交信息。

其他回答

我通常使用gitadd-all从远程存储库中删除文件/文件夹

rm -r folder_name
git add --all
git commit -m "some comment"
git push origin master

master可以被存储库的任何其他分支替换。

您可以使用Attlasian源树(Windows)(https://www.atlassian.com/software/sourcetree/overview). 只需从树中选择文件并按下顶部的“删除”按钮。文件将从本地存储库和本地git数据库中删除。然后提交,然后推送。

您可以在本地删除文件夹,然后按如下方式推送:

git rm -r folder_name
git commit -m "your commit"
git push origin master

要仅从git存储库而不是本地删除文件夹/目录,请尝试3个简单命令。


删除目录的步骤

git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master

在下次提交时忽略该文件夹的步骤

要在下次提交时忽略该文件夹,请在根文件夹(初始化git的主项目目录)中创建一个名为.gitignore的文件并将该文件夹名称放入其中。您可以忽略任意数量的文件/文件夹

.gitignore文件将如下所示

/FolderName

如果删除目录中的文件(其他答案解释为git-rm),那么就git而言,该目录将不再存在。您不能提交一个空目录,也不能删除一个。

这与subversion不同,在subversion中,您必须显式地svn rm emptyfolder/,这也是git的手册页将自己描述为“愚蠢的内容跟踪器”的原因

关于“如何将空目录添加到git存储库”的回答链接到此主题的常见问题解答:

目前git索引的设计(临时区域)仅允许文件被列入名单,没有人能胜任进行更改以允许清空目录已经足够关心这种情况可以补救。自动添加目录在其中添加文件时。那个就是,永远不必添加目录到存储库,并且不被跟踪他们自己。你可以说“gitadd<dir>”将在其中添加文件。如果您确实需要一个目录存在于签出中,您应该创建gitignore适用于这一目的;你可以让它空着,或填写文件的名称期望显示在目录中。