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


当前回答

要添加新目录:

mkdir <YOUR-DIRECTORY>

但是现在Git不知道这个新目录,因为Git跟踪的是文件而不是目录目录

git status

Git不会意识到我们所做的更改,所以我们添加了hidden.keep文件,以使Git意识到新的更改。

touch /YOUR-directory/.keep

现在,如果你点击git状态,git就会知道这些变化。

如果要删除目录,则应使用此命令。

rm -r <YOUR-DIRECTORY>

如果您使用gitstatus进行检查,您将看到目录已被删除。

其他回答

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

这两个答案的组合对我有用

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

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

如果您正在从GitHub web应用程序中删除目录,您将找到一个删除选项。然而,在这之后,它会给你一个被删除的文件列表,底部有提交选项。请记住提交它。否则,目录将不会被删除。

参考-https://docs.github.com/en/repositories/working-with-files/managing-files/deleting-files-in-a-repository

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

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