从目录中删除所有的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文件夹。