簡體   English   中英

從目錄中刪除所有 git 文件?

[英]Remove all git files from a directory?

我有一個受版本控制的文件夾。 我想復制它以發送,但不想包括所有 .git 目錄及其下的文件。

有沒有辦法刪除所有 git 文件而不是手動刪除所有文件?

.git 文件夾僅存儲在 repo 的根目錄中,而不是像 subversion 那樣的所有子目錄。 您應該可以只刪除一個文件夾,除非您使用的是子模塊......然后他們也會有一個。

如何在 Linux 中刪除文件夾下的所有.git目錄。

運行這個 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.

然后cd到存儲庫

find . -name ".git*" -exec rm -R {} \;

確保不要意外地將單個點、斜杠、星號或其他正則表達式通配符通過管道傳遞到 find 中,否則rm會很樂意將其刪除。

您可以使用git-archive ,例如:

git archive master | bzip2 > project.tar.bz2

master是所需的分支。

萬一其他人偶然發現了這個話題——這里有一個更“一刀切”的解決方案。

如果您使用的是.git.svn ,則可以使用--exclude-vcs選項作為 tar。 這將忽略不同版本控制系統所需的許多不同文件/文件夾。

如果您想了解更多信息,請查看: http ://www.gnu.org/software/tar/manual/html_section/exclude.html

ls | xargs 找到 2>/dev/null | egrep /\.git$ | xargs rm -rf

此命令(它只是一個命令)將遞歸刪除目錄中的 .git 目錄(和文件)而不刪除頂級 git 存儲庫,如果您想提交所有文件而不管理任何子模塊,這很方便.

查找 2>/dev/null | egrep /\.git$ | xargs rm -rf

這個命令會做同樣的事情,但也會從頂級目錄中刪除 .git 文件夾。

與 SVN 或 CVS 等其他源代碼控制系統不同,git 將其所有元數據存儲在單個目錄中,而不是項目的每個子目錄中。 因此,只需從根目錄中刪除.git (或使用git-export之類的腳本)就可以了。

使用 PowerShell

Get-ChildItem -Path .\path\to\folder -Filter ".git" -Recurse -Attributes "H" | Remove-Item -Force

更多解釋:

須藤找到-name.git -exec rm -fr {};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM