我有一个在版本控制下的文件夹。我想复制它以便发送,但不想包含所有.git目录和其中的文件。
是否有一种方法可以删除所有git文件而不是手动删除它们?
我有一个在版本控制下的文件夹。我想复制它以便发送,但不想包含所有.git目录和其中的文件。
是否有一种方法可以删除所有git文件而不是手动删除它们?
如何在Linux下删除文件夹中的所有.git
目录。
运行以下find命令,它将列出当前文件夹下所有的.git
目录:
find . -type d -name ".git" \
&& find . -name ".gitignore" \
&& find . -name ".gitmodules"
输出:
./.git
./.gitmodules
./foobar/.git
./footbar2/.git
./footbar2/.gitignore
对于每个项目,git只有一个.git文件夹,因此应该只有3或4个.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
文件夹。http://source.android.com/source/developing.html - CJBS.git
查找语句中删除-type d
子句,这样子模块的.git
文件也会被删除。 - pperejon.git文件夹只存储在仓库的根目录中,而不像Subversion那样存储在所有子目录中。你应该只需要删除那个文件夹,除非你正在使用Submodules...然后它们也会有一个。
git archive
,它就是为此而设计的,或者只需压缩除 .git
目录以外的所有内容即可。 - Cascabel.git
,但你可以在任何地方拥有克隆库,例如 vendor/something/something/.git
。 - srcspider.gitmodules
文件和任何相应的子模块。 - Jay Taylorcd
到仓库,然后
find . -name ".git*" -exec rm -R {} \;
确保不要无意中通过管道将单个点、斜杠、星号或其他正则表达式通配符传递给find命令,否则rm
命令将会高兴地删除它。
2>/dev/null
来消除 find: ./.git: No such file or directory
错误。 - Thomas Brookscp -r
。 - gcbcp -r
不处理不属于存储库的文件和目录,这也包括被忽略的文件。但是,如果您确定不需要这些文件,并且您的处理/时间很关键,那么可以使用 cp
命令。 - jweyrich使用PowerShell
Get-ChildItem -Path .\path\to\folder -Filter ".git" -Recurse -Attributes "H" | Remove-Item -Force
更多解释:
这里有两个链接,分别是关于it技术中的PowerShell命令的使用说明。通过这些链接,你可以了解到如何使用PowerShell命令来管理文件和目录。与 SVN 或 CVS 等其他源代码控制系统不同,git 将其所有元数据存储在一个 单一 目录中,而不是在项目的每个子目录中。因此,只需从根目录中删除 .git
(或使用类似 git-export 的脚本),您就可以顺利完成。
sudo find -name .git -exec rm -fr {} ;
可以翻译为“使用sudo命令查找名为.git的文件并删除它们”。ls | xargs find 2>/dev/null | egrep /\.git$ | xargs rm -rf
这个命令(只有一个命令)将递归地删除目录中的.git目录(和文件),而不会删除顶级git仓库,如果您想提交所有文件而不管理任何子模块,则非常方便。
find 2>/dev/null | egrep /\.git$ | xargs rm -rf
这个命令也会做同样的事情,但还会从顶层目录中删除.git文件夹。