據an answer of 「How often should you use git-gc?」,git gc
會自動運行每次推送到遠程的時間。甚至當我推到遠程,GC不會出現運行
我評論了答案,但一直沒有得到迴應,所以我問在這裏。
我在我的樹中有無法訪問的提交(作爲
git commit --amend
的結果)。這可以通過git log --reflog
進行驗證。我將分支推送到遠程存儲庫並再次檢查我的樹;無法訪問的提交仍然存在。當推送發生時,顯然git gc
未運行。 ...?
實施例:
$ git commit -m 'commit A'
$ git commit -m 'commit B'
$ git commit -m 'commit C'
$ git commit --amend -m 'commit D'
$ git commit -m 'commit E'
$ git commit -m 'commit F'
$ git push origin master
$ git log --reflog
* commit F (HEAD -> master, origin/master)
* commit E
* commit D (an amendment of C)
|
| * commit C
|/
* commit B
* commit A
當我主推到遠程和運行git log --reflog
,提交C是仍然可見。即使提交C超過30天,情況仍然如此。我想git push
自動運行git gc
,我想git gc
刪除不可達的提交(在這種情況下,C)。我錯過了什麼嗎?
你期望提交消失的哪個回購? 'git push'會在遠程repo_上執行'git gc'。 –
您也可以在這裏找到heisenbug問題:我相信reflog本身可以表示對提交的引用。 –