从目录中删除所有的git文件?
我有一个文件夹下的版本控制。 我想制作一份副本发送,但不希望包含所有的.git目录及其下的文件。
有没有办法删除所有的git文件,而不是手动删除所有的?
.git文件夹只存储在repo的根目录下,而不是像subversion那样的所有子目录。 你应该只能删除那个文件夹,除非你使用的是Submodules …那么他们也会有一个。
如何删除Linux中的一个文件夹下的所有.git
目录。
这个find命令将列出当前文件夹下的所有.git
目录:
find . -type d -name ".git" \ && find . -name ".gitignore" \ && find . -name ".gitmodules"
打印:
./.git ./.gitmodules ./foobar/.git ./footbar2/.git ./footbar2/.gitignore
应该只有像3或.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 {} \;
为我做这份工作
如果有人绊倒这个话题 – 这是一个更“一刀切”的解决scheme。
如果您使用的是.git或.svn,则可以使用tar的“–exclude-vcs”选项。 这将忽略不同的版本控制系统所需的许多不同的文件/文件夹。
如果您想了解更多信息,请查看: http : //www.gnu.org/software/tar/manual/html_section/exclude.html
与其他源代码控制系统(如SVN或CVS)不同,git将其所有元数据存储在一个目录中,而不是存储在项目的每个子目录中。 所以只需从根目录中删除.git
(或使用像git-export这样的脚本),你应该没问题。
ls | xargsfind2> / dev / null | egrep /..git$ | xargs rm -rf
这个命令(它只是一个命令)将recursion地删除目录中的.git目录(和文件),而不删除顶层的git repo,如果要提交所有文件而不pipe理任何子模块。
find2> / dev / null | egrep /..git$ | xargs rm -rf
该命令将执行相同的操作,但也会从顶级目录中删除.git文件夹。