Удалить все git файлы из каталога?
У меня есть папка под контролем версий. Я хочу сделать копию, чтобы отправить ее, но не хочу включать все .каталоги git и файлы под ним.
есть ли способ удалить все файлы git вместо того, чтобы вручную удалить их все?
7 ответов:
The .папка git хранится только в корневом каталоге РЕПО, а не во всех подкаталогах, таких как subversion. Вы должны быть в состоянии просто удалить эту папку, если вы используете подмодулей...тогда у них тоже будет один.
Как удалить все
.git
каталоги в папке в Linux.запустите эту команду поиска, она будет перечислять все
.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 для каждого проекта. Вы можетеrm -rf yourpath
каждый из вышеперечисленных вручную.если вы хотите удалить их все в одной команде и жить опасно:
//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 `/` or other wildcard //into xargs rm -rf, then the next question you will have is: "why is //the bash ls command not found? Requiring an OS reinstall.
можно использовать git-архив, например:
git archive master | bzip2 > project.tar.bz2
здесь
master
- это нужная ветвь.
cd
в репозиторий затемfind . -name ".git*" -exec rm -R {} \;
убедитесь, что случайно не передайте одну точку, косую черту, звездочку или другой подстановочный знак regex в find, или же
rm
будет счастлив удалить его.
В случае, если кто-то еще наткнется на эту тему - вот вам еще "один размер подходит всем" решение.
Если вы используете
.git
или.svn
можно использовать--exclude-vcs
опция для tar. Это будет игнорировать много различных файлов / папок, необходимых для различных систем управления версиями.Если вы хотите узнать больше об этом, проверьте: http://www.gnu.org/software/tar/manual/html_section/exclude.html
В отличие от других систем управления версиями, таких как SVN или CVS, git хранит все свои метаданные в один каталог, а не в каждом подкаталоге проекта. Так что просто удалите
.git
из корня (или использовать скрипт типа git-export) и вы должны быть хорошо.
ls/xargs найти 2>/dev | null /egrep/\.git$ / xargs rm-rf
эта команда (и это всего лишь одна команда) будет рекурсивно удалена .каталоги git (и файлы), которые находятся в каталоге без удаления репозитория Git верхнего уровня, что удобно, если вы хотите зафиксировать все свои файлы без управления любыми подмодулями.
найти 2 > /dev/null | egrep /\.git$ / xargs rm-rf
эта команда будет делать то же самое, но также удалить .папка git из каталога верхнего уровня.