Подтвердить что ты не робот

Удалить все git файлы из каталога?

У меня есть папка под управлением версии. Я хочу сделать его копию для отправки, но не хочу включать все каталоги .git и файлы под ним.

Есть ли способ удалить все файлы git вместо того, чтобы вручную удалить все из них?

4b9b3361

Ответ 1

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

Ответ 2

Как удалить все каталоги .git в папке в Linux.

Эта команда find отобразит все каталоги .git в текущей папке:

find . -type d -name ".git" \
&& find . -name ".gitignore" \
&& find . -name ".gitmodules"

Печать

./.git
./.gitmodules
./foobar/.git
./footbar2/.git
./footbar2/.gitignore

Там должно быть только 3 или 4 каталога .git, потому что git имеет только одну .git-папку для каждого проекта. Вы можете сделать это вручную.

Если вы чувствуете, что удаляете их все в одной команде и живете опасно:

//Retrieve all the files named ".git" and pump them into 'rm -rf'
//WARNING if you don't understand why/how this command works, DO NOT run it!

( find . -type d -name ".git" \
  && find . -name ".gitignore" \
  && find . -name ".gitmodules" ) | xargs rm -rf

//WARNING, if you accidentally pipe a `.` or `/` to xargs rm -rf, 
//then everything will be gone.  Which requires an OS reinstall.

Ответ 3

Вы можете использовать git-archive, например:

git archive master | bzip2 > project.tar.bz2

Где master - искомая ветвь.

Ответ 4

cd в репо, тогда

find . -name ".git*" -exec rm -R {} \;

выполняйте работу для меня

Ответ 5

В случае, если кто-то другой наткнется на эту тему - здесь более "один размер подходит всем".

Если вы используете .git или .svn, вы можете использовать опцию -exclude-vcs для tar. Это будет игнорировать множество разных файлов/папок, требуемых различными системами управления версиями.

Если вы хотите узнать больше об этом, проверьте: http://www.gnu.org/software/tar/manual/html_section/exclude.html

Ответ 6

В отличие от других систем управления версиями, таких как SVN или CVS, git хранит все свои метаданные в одном каталоге, а не в каждом подкаталоге проекта. Поэтому просто удалите .git из корня (или используйте script как git-export), и все должно быть в порядке.

Ответ 7

ls | xargs find 2 > /dev/null | egrep/\.git$ | xargs rm -rf

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

найти 2 > /dev/null | egrep/\.git$ | xargs rm -rf

Эта команда будет делать то же самое, но также удалит папку .git из каталога верхнего уровня.