git – 如何删除空文件夹并推送更改?

我怎样才能在本地删除一个空文件夹,还有其他的协作者通过推拉共享远程文件? 我知道这个文件夹没有被git“追踪”,但问题仍然存在。

例如,我把一个文件移动到另一个文件夹,并承诺改变(移动)。

但我不能git rm name文件夹,因为我得到“不匹配” git rmdir name不存在。

我可以做一个git clean -f folder但是如何推升呢?

我可以直接rm文件,但是如何正确完成目录的删除操作,并将其推送到存储库,然后在拔出时删除其中的现有文件夹?

简短的回答: 您不能将更改推送到目录(添加,删除等),因为Git不会自行跟踪目录

根据常见问题解答 :

目前,git索引(登台区域)的devise只允许列出文件,而没有人能够做出更改以允许空目录已经足够关心这种情况来补救它。

添加文件时自动添加目录。 也就是说,目录永远不必被添加到存储库,并且不会自行跟踪。

所以就Git而言,你的空目录已经不存在了。

我发现养成使用git clean -fd的习惯消除了推动删除目录的需要。 但是, git clean可以删除你可能不想删除的项目(包括你还没有提交的任何新文件),所以我倾向于首先使用git clean -fdn来查看如果使用该命令将会删除的项目。

看起来您可能会被迫与您的开发人员进行交stream,以清理该目录。

 git add --all git clean -f -d git commit -m "trying to remove folders" git push 

您不能推空文件夹。 但是,如果您想清除克隆/本地存储库中的空文件夹,请提交最新的更改。然后,只需删除本地副本中.git文件夹以外的所有文件。 然后再次重置所有的更改,这将退回所有的文件,但留下它不跟踪的空目录。

一个稍微黑客的方法是在目录中创build一个伪文件,提交它,然后删除它。 删除它也将删除目录。 所以创build名称/ fake.txt

 git add name/fake.txt git commit -m "message" git rm name/fake.txt git commit -m "message2"