2012-04-09 4 views
44

Как я могу удалить пустую папку на локальном компьютере, а также это произойдет для других соавторов, которые делят пульт с помощью push-push? Я знаю, что папки не отслеживаются в этом смысле git, но вопрос остается.git - как удалить пустую папку и нажать это изменение?

например. Я переместил файл в другую папку и совершил изменение (перемещения).

Но я не могу git rm name папка, поскольку я получаю «не соответствует» git rmdir name не существует.

Я могу сделать git clean -f folder, но как это происходит?

Я могу напрямую загрузить файл rm, но как я могу сделать это удаление каталога корректным и нажатым в репозиторий, а затем другим, когда они вытаскивают, чтобы удалить существующую папку?

+1

Что вы имеете в виду, вопрос остается? – manojlds

ответ

75

Короткий ответ: Вы не можете вносить изменения в каталоги (добавленные, удаленные и т. Д.), Потому что Git не отслеживает каталоги самостоятельно.

Согласно FAQ:

В настоящее время дизайн индекса мерзавца (постановка область) разрешает только файлы, которые будут перечислены, и никто не достаточно компетентны, чтобы сделать изменения, чтобы пустые каталоги заботился достаточно об этом чтобы исправить это.

Каталоги добавляются автоматически при добавлении в них файлов. То есть каталоги никогда не должны добавляться в репозиторий и не отслеживаются сами по себе.

Что касается Git, то ваш пустой каталог больше не существует.

Я обнаружил, что получение привычки использовать git clean -fd устраняет необходимость нажатия на удаление каталогов. Тем не менее, git clean может удалять элементы, которые вы не хотите удалять (включая любые новые файлы, которые вы еще не совершили), поэтому я стараюсь сначала использовать git clean -fdn, чтобы увидеть, что удалит, если я воспользуюсь этой командой.

Похоже, вы можете быть вынуждены поговорить со своими коллегами-разработчиками, чтобы очистить этот каталог.

+0

Mercurial имеет более удобный подход - каталог удаляется, если он пуст: http://stackoverflow.com/a/3917322/913223 и http://superuser.com/questions/81204/how-to-add-an-empty -папка-в-меркурийном проекте –

+0

Этот ответ является неполным. 'Git svn fetch' поддерживает пустые папки.Даже «git svn rebase» воссоздает пустые папки, если их просто удалить. – Andry

-6

Немного взломанный способ создать фальшивый файл в каталоге, зафиксировать его, а затем удалить. Удаление этого файла также приведет к удалению каталога. Так создать имя/fake.txt

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

не работал для меня :( – lImbus

+1

Этот подход действительно работает, но на втором этапе вы хотите удалить папку, содержащую файл 'rm -rf name', а затем зафиксировать изменение, папка теперь исчезнет – igniteflow

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

Вы не можете нажать пустые папки. Но если вы хотите очистить пустые папки в своем клонированном/локальном репо, зафиксируйте свои последние изменения. Затем просто удалите все файлы, кроме папки .git, в локальной копии. Затем снова сбросьте все изменения, которые отбрасывают все файлы, но не содержат пустые каталоги, которые он не отслеживает.