2016-07-20 3 views
0

Я только что закончил GIT клона здесь на новом компьютере, и теперь у меня есть репо в интересном состоянии:Убирайся мерзавец рабочего каталога

Там есть ни одна ветвь не проверила. Рабочий каталог пуст, но репо все здесь, сжато в метаданных .git.

Конечно, недостающий шаг здесь - сделать git checkout, чтобы получить рабочую копию на ветку, но это состояние заставило меня задуматься. Это довольно большое репо, которое я тоже не ожидаю, чтобы получить доступ к очень часто, так что теперь я задаюсь вопросом, есть ли способ вернуться в это «чистое» состояние, когда никакие ветви не проверяются, и файлы существуют только как метаданные?

Это позволит значительно сократить объем дискового пространства.

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

Одним из возможных решений здесь может быть создание ветки, в которой все файлы будут удалены, но это не очень элегантно. Может быть, существует более прямой подход?

Как всегда, заблаговременно!

Приветствия

+0

Возможный дубликат [Как очистить локальный рабочий каталог в git?] (Http://stackoverflow.com/questions/673407/how-do-i-clear-my-local-working-directory-in- git) –

+0

Не совсем. Я прочитал этот, и, похоже, он собирается очистить неиспользуемые файлы из рабочей копии. Мой вопрос здесь состоял в том, чтобы вытереть всю рабочую копию и оставить только метаданные на диске. – HarvesteR

ответ

1

Ну, я считаю, я нашел свой ответ здесь. Возможно!

Git имеет концепцию «сиротских» ветвей. Это филиал, который не имеет отношения к истории с другими обязательствами по истории репо. Это позволяет проверить, чтобы «не совершать», выполнив:

git checkout --orphan none

, а затем

git rm -rf .

Это эффективно избавляется от всех файлов, а также потому, что «ни один» филиал имеет нет родословной, удаления не отображаются как удаления. Папка метаданных остается помещенной, поэтому, чтобы вернуться к действительной ветке, вы просто выполняете другую проверку.

Больше информации здесь: https://coderwall.com/p/0n3soa/create-a-disconnected-git-branch

Должен любить мерзавца!

Приветствия

+1

Да. Короче/быстрее, хотя и сложнее, сделать фиксацию, которая имеет пустое дерево в качестве своего «дерева», а затем создать имя (ветвь или имя тега), которое указывает на это пустое коммит. См. Http://stackoverflow.com/q/9765453/1256452 и посмотрите на 'git commit-tree' и' git update-ref'. – torek

-1

Я только что закончил GIT клон здесь на новом компьютере, и теперь у меня есть репо в интересном состоянии: Существует ни одна ветвь не проверил. Рабочий каталог пуст, но репо все здесь, сжато в метаданных .git.

По умолчанию git clone будет проверять основную ветку для вас. Если главная ветка пуста (обычно мне нравится создавать более значимое имя ветви для запуска, а не значение по умолчанию, то есть master), вы не увидите никакого файла в рабочем каталоге.

мерзавец фотографии --orphan ни

, а затем

мерзавец гт -rf.

Я бы рекомендовал вам не делать этого. git rm будет отмечать файлы как подлежащие удалению. Это разрушит ваш рабочий каталог.