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

时间:2012-04-09 14:19:01

标签: git directory rm rmdir

如何在本地删除空文件夹,以及通过pull-push共享远程的其他协作者会发生这种情况?我知道git在这个意义上没有“跟踪”文件夹,但问题仍然存在。

e.g。我将文件移动到另一个文件夹并提交了更改(移动)。

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

我可以做git clean -f folder但是如何推高这个?

我可以直接rm该文件,但是如何正确地完成目录删除并推送到存储库,然后在他们拉出时将其删除,以便删除现有文件夹?

5 个答案:

答案 0 :(得分:99)

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

根据FAQ

  

目前git索引(临时区域)的设计只允许列出文件,没有人能够进行更改以允许空目录已经足够关注这种情况来补救它。

     

在其中添加文件时会自动添加目录。也就是说,目录永远不必添加到存储库中,也不会自己跟踪。

就Git而言,您的空目录不再存在。

我发现养成使用git clean -fd的习惯消除了推送删除目录的需要。但是,git clean可以删除您可能不想删除的项目(包括您尚未提交的任何新文件),因此我倾向于首先使用git clean -fdn查看删除的内容如果我使用命令。

看起来您可能被迫与其他开发人员交谈,以便清理该目录。

答案 1 :(得分:8)

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

答案 2 :(得分:0)

用于删除空文件夹

我想删除一个空目录(文件夹),我创建了git无法删除它,经过一些研究 Git不会跟踪空目录。如果您的工作项目目录为空,则只需使用

将其删除
rm -r folderName

无需参与Git。请注意,此答案仅在本地计算机存储库上进行了测试,

答案 3 :(得分:-1)

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

答案 4 :(得分:-7)

稍微讨厌这种方法是在目录中创建一个假文件,提交它,然后删除它。删除它也将删除该目录。 所以创建name / fake.txt

git add name/fake.txt
git commit -m "message"
git rm name/fake.txt
git commit -m "message2"
相关问题