У меня есть папка под управлением версии. Я хочу сделать его копию для отправки, но не хочу включать все каталоги .git и файлы под ним.
Есть ли способ удалить все файлы git вместо того, чтобы вручную удалить все из них?
У меня есть папка под управлением версии. Я хочу сделать его копию для отправки, но не хочу включать все каталоги .git и файлы под ним.
Есть ли способ удалить все файлы git вместо того, чтобы вручную удалить все из них?
Папка .git сохраняется только в корневом каталоге репо, а не во всех подкаталогах, таких как подрывная деятельность. Вы должны иметь возможность просто удалить эту одну папку, если вы не используете Submodules... тогда у них тоже будет один.
Как удалить все каталоги .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.
Вы можете использовать git-archive, например:
git archive master | bzip2 > project.tar.bz2
Где master
- искомая ветвь.
cd в репо, тогда
find . -name ".git*" -exec rm -R {} \;
выполняйте работу для меня
В случае, если кто-то другой наткнется на эту тему - здесь более "один размер подходит всем".
Если вы используете .git или .svn, вы можете использовать опцию -exclude-vcs для tar. Это будет игнорировать множество разных файлов/папок, требуемых различными системами управления версиями.
Если вы хотите узнать больше об этом, проверьте: http://www.gnu.org/software/tar/manual/html_section/exclude.html
В отличие от других систем управления версиями, таких как SVN или CVS, git хранит все свои метаданные в одном каталоге, а не в каждом подкаталоге проекта. Поэтому просто удалите .git
из корня (или используйте script как git-export), и все должно быть в порядке.
ls | xargs find 2 > /dev/null | egrep/\.git$ | xargs rm -rf
Эта команда (и это всего лишь одна команда) будет рекурсивно удалять каталоги (и файлы).git, которые находятся в каталоге, не удаляя репо верхнего уровня git, что удобно, если вы хотите передать все свои файлы без управления подмодулями.
найти 2 > /dev/null | egrep/\.git$ | xargs rm -rf
Эта команда будет делать то же самое, но также удалит папку .git из каталога верхнего уровня.