在git中,可以在本地倉(cāng)庫(kù)的目錄下調(diào)用命令行刪除根目錄下的“.git”文件夾,語(yǔ)法為“find . -name ".git" | xargs rm -Rf”;將本地倉(cāng)庫(kù)清除之后,可以利用“rm -rf + github倉(cāng)庫(kù)地址”命令在github的對(duì)應(yīng)庫(kù)中到setting刪除庫(kù)。
本文操作環(huán)境:Windows10系統(tǒng)、Git2.30.0版、Dell G3電腦。
怎么刪除.git目錄
1.刪除.git文件夾
- 在本地倉(cāng)庫(kù)的目錄下調(diào)用命令行刪除根目錄下的.git文件夾,輸入
find . -name ".git" | xargs rm -Rf # OR rm -rf .git
這樣本地倉(cāng)庫(kù)就清除了,像下面這樣,master不見(jiàn)了。
2. 手動(dòng)刪除掉殘留的.git文件
- 在命令行中輸入
rm -rf + github
倉(cāng)庫(kù)地址,例
rm -rf https://github.com/xxx/xxx.git
-
在 github 的對(duì)應(yīng)的庫(kù)中到 setting 刪除庫(kù)。
擴(kuò)展知識(shí):
2..git
文件過(guò)大!刪除大文件
在我們?nèi)粘J褂肎it的時(shí)候,一般比較小的項(xiàng)目,我們可能不會(huì)注意到.git 這個(gè)文件。
其實(shí), .git文件主要用來(lái)記錄每次提交的變動(dòng),當(dāng)我們的項(xiàng)目越來(lái)越大的時(shí)候,我們發(fā)現(xiàn) .git文件越來(lái)越大。
很大的可能是因?yàn)樘峤涣舜笪募?,如果你提交了大文件,那么即使你在之后的版本中將其刪除,但是,
實(shí)際上,記錄中的大文件仍然存在。
為什么呢?仔細(xì)想一想,雖然你在后面的版本中刪除了大文件,但是Git是有版本倒退功能的吧,那么如果大文件不記錄下來(lái),
git拿什么來(lái)給你回退呢?但是,.git文件越來(lái)越大導(dǎo)致的問(wèn)題是: 每次拉項(xiàng)目都要耗費(fèi)大量的時(shí)間,并且每個(gè)人都要花費(fèi)
那么多的時(shí)間。。
git給出了解決方案,使用git branch-filter
來(lái)遍歷git history tree
, 可以永久刪除 history 中的大文件,達(dá)到讓.git文件瘦身的目的。
下面給出步驟(以下步驟非常危險(xiǎn),操作需謹(jǐn)慎!別把公司刪沒(méi)了哈哈)
首先找出git中前五大的文件:git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5
執(zhí)行的結(jié)果實(shí)際上是這個(gè)樣子的:
第一行的字母其實(shí)相當(dāng)于文件的id,用以下命令可以找出id 對(duì)應(yīng)的文件名:git rev-list --objects --all | grep 8f10eff91bb6aa2de1f5d096ee2e1687b0eab007
好了,最大的文件找到了。怎么刪除呢?
git filter-branch --index-filter 'git rm --cached --ignore-unmatch <your-file-name>' rm -rf .git/refs/original/ git reflog expire --expire=now --all git fsck --full --unreachable git repack -A -d git gc --aggressive --prune=now git push --force [remote] master
首先,里面最重要的兩條命令是 git filter-branch
和 gc
, filter-branch 真正在清理,但是只運(yùn)行它也是沒(méi)用的,需要再刪除備份的文件,重新打包之類的,最后的gc命令,用來(lái)收集產(chǎn)生的垃圾,最終清除大文件。
推薦學(xué)習(xí):《Git教程》