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


当前回答

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

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

其他回答

转到git目录,然后键入以下命令:rm-rf<目录名>

删除目录后,通过以下方式提交更改:gitcommit-m“您的提交消息”

然后只需在远程GIT目录上推送更改:git推送原点<分支名称>

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

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

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

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

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

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

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

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

要添加新目录:

mkdir <YOUR-DIRECTORY>

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

git status

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

touch /YOUR-directory/.keep

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

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

rm -r <YOUR-DIRECTORY>

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