如何在本地删除空文件夹,以及通过pull-push共享远程的其他协作者会发生这种情况?我知道git在这个意义上没有“跟踪”文件夹,但问题仍然存在。
e.g。我将文件移动到另一个文件夹并提交了更改(移动)。
但我不能git rm name
我得到的文件夹“不匹配”
git rmdir name
不存在。
我可以做git clean -f folder
但是如何推高这个?
我可以直接rm
该文件,但是如何正确地完成目录删除并推送到存储库,然后在他们拉出时将其删除,以便删除现有文件夹?
答案 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"