我有一个受版本控制的文件夹。我想对其进行复制,但不想在其下面包含所有.git目录和文件。
有没有办法删除所有的git文件,而不是手动删除它们?
Answers:
.git文件夹仅存储在存储库的根目录中,而不是所有子目录(如subversion)。除非您正在使用子模块,否则您应该只能够删除该文件夹之一,那么它们也将具有一个文件夹。
git archive; 为此,甚至只是将.git目录以外的所有内容都压缩。
.gitignore文件等。我猜您可以编写一个脚本来执行此操作,但是仅使用git-archive然后从存档版本中手动删除它们可能会更简单。
.git但是您可以在任何地方都有存储库,例如。vendor/something/something/.git。
如何.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文件夹。您可以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.
.repo删除所有与Git相关的文件夹时(如果进行Android开发),请考虑删除该文件夹(在树的顶部)。source.android.com/source/developing.html
-type d子句.git,因此子模块.git文件也将被删除。
cp -r
cp -r不处理不属于存储库的文件和目录,其中也包括被忽略的文件和目录。但是,如果您确定不需要此操作,并且您的处理/时间很关键,那么请继续cp。
git archive有一个缺点-它不导出子模块。一个需要git submodule foreach --recursive git archive ...。太糟糕了!
万一其他人迷失了这个话题,这里有一个“一刀切”的解决方案。
如果使用.git或.svn,则可以使用--exclude-vcstar选项。这将忽略不同版本控制系统所需的许多不同文件/文件夹。
如果您想了解更多信息,请查看:http : //www.gnu.org/software/tar/manual/html_section/exclude.html
与SVN或CVS等其他源代码控制系统不同,git将其所有元数据存储在单个目录中,而不是项目的每个子目录中。因此,只需.git从根目录删除(或使用git-export之类的脚本),就可以了。