git prune, git remote prune, git fetch --prune 三者異同
阿新 • • 發佈:2019-02-19
遠端分支的3種狀態
- 遠端倉庫確實存在分支dev
- 本地版本庫(.git)中的遠端快照
- 和遠端分支建立聯絡的本地分支
- Prune all unreachable objects from the object database
unreachable objects 指的是.git\objects中沒有被使用的hash檔案
song@test MINGW64 /d/Git/Temp (master) $ git prune -n 0baff3f3df27aacdd2edb6f83a5c47dd3b7ca05b tree song@test MINGW64 /d/Git/Temp (master) $ git prune song@test MINGW64 /d/Git/Temp (master) $ git prune -n
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- Deletes all stale remote-tracking branches under .
- 會清理掉狀態2中的遠端庫已被刪除的遠端分支,本地庫仍存在的 stale remote-tracking branches
song@test MINGW64 /d/Git/Temp (master) $ git branch * master song@test MINGW64 /d/Git/Temp (master) $ git checkout -b dev Switched to a new branch 'dev' song@test MINGW64 /d/Git/Temp (dev) $ git push origin dev Total 0 (delta 0), reused 0 (delta 0) To github.com:Song2017/Temp.git * [new branch] dev -> dev song@test MINGW64 /d/Git/Temp (dev) $ git branch -a -v * dev 3902953 add readme.md master 3902953 add readme.md remotes/origin/HEAD -> origin/master remotes/origin/dev 3902953 add readme.md remotes/origin/master 3902953 add readme.md
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 接下來,在github中刪掉dev分支,此時本地版本庫中的資料快照仍然有dev分支
- git remote prune 會與遠端庫進行一次同步,最終清理掉版本庫中的dev分支,但本地工作區中的dev分支並不會刪除。。
song@test MINGW64 /d/Git/Temp (master) $ git remote prune origin Pruning origin URL: [email protected]:Song2017/Temp.git * [pruned] origin/dev song@test MINGW64 /d/Git/Temp (master) $ git branch -a -v dev 3902953 add readme.md * master 3902953 add readme.md remotes/origin/HEAD -> origin/master remotes/origin/master 3902953 add readme.md
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- Before fetching, remove any remote-tracking references that no longer exist on the remote
- 同git remote prune
刪除本地分支
git branch -d/D dev -D 強制刪除