第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

列出并刪除沒有分支的Git提交(懸空?)

列出并刪除沒有分支的Git提交(懸空?)

Git
www說 2019-07-31 18:09:07
列出并刪除沒有分支的Git提交(懸空?)我有一個Git存儲庫,有很多提交,沒有特定的分支,我可以git show,但當(dāng)我嘗試列出包含它們的分支時,它報告什么都沒有。我認(rèn)為這是懸掛的提交/樹問題(由于-D分支),所以我修剪了回購,但之后我仍然看到相同的行為:$ git fetch origin$ git fsck --unreachable$ git fsck沒有輸出,沒有懸空(對吧?)。但提交存在$ git show 793db7f272ba4bbdd1e32f14410a52a412667042commit 793db7f272ba4bbdd1e32f14410a52a412667042Author: ...它不能通過任何分支到達(dá)$ git branch --contains 793db7f272ba4bbdd1e32f14410a52a412667042沒有輸出。這個提交的狀態(tài)究竟是什么?如何列出處于類似狀態(tài)的所有提交?如何刪除那些提交?
查看完整描述

3 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個贊

沒有輸出,沒有懸空(對吧?)

請注意,從您的reflog引用的提交被認(rèn)為是可訪問的。

這個提交的狀態(tài)究竟是什么?如何列出具有類似狀態(tài)的所有提交

通過--no-reflogs說服git fsck向他們展示。

如何刪除那些提交?

一旦您的reflog條目過期,那么這些對象也將被清除git gc。

到期由調(diào)控gc.pruneexpiregc.reflogexpiregc.reflogexpireunreachable設(shè)置。參看 git help config

默認(rèn)值都很合理。


查看完整回答
反對 回復(fù) 2019-07-31
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個贊

要刪除所有懸空提交以及可從reflog中訪問的提交,請執(zhí)行以下操作:

git reflog expire --expire-unreachable=now --allgit gc --prune=now

但請確保這是你想要的。我建議你閱讀手冊頁,但這里是要點(diǎn):

git gc刪除無法訪問的對象(提交,樹,blob(文件))。如果某個對象不屬于某個分支的歷史記錄,則該對象無法訪問。實(shí)際上它有點(diǎn)復(fù)雜:

git gc 做其他一些事情,但它們在這里并不重要,也沒有危險。

不會刪除小于兩周的無法訪問的對象,因此我們使用的--prune=now方法是“刪除之前創(chuàng)建的無法訪問的對象”。

也可以通過reflog訪問對象。雖然分支記錄了某個項(xiàng)目的歷史記錄,但是reflog記錄了這些分支的歷史記錄。如果你修改,重置等提交將從分支歷史記錄中刪除,但是如果你意識到你犯了錯誤,git會保留它們。Reflogs是一種方便的方法,可以找出在分支(或HEAD)上執(zhí)行的破壞性(和其他)操作,從而更容易撤消破壞性操作。

因此,我們還必須刪除reflog以實(shí)際刪除從分支無法訪問的所有內(nèi)容。我們通過使--allreflogs 到期來實(shí)現(xiàn)這一目標(biāo)。git再次保留了一些reflog以保護(hù)用戶,所以我們再次告訴它不要這樣做:--expire-unreachable=now。

由于我主要使用reflog來從破壞性操作中恢復(fù),我通常會使用--expire=now它來完全消除reflog。


查看完整回答
反對 回復(fù) 2019-07-31
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個贊

我有同樣的問題,仍然遵循這個線程中的所有建議:


git reflog expire --expire-unreachable=now --all

git gc --prune=now

git fsck --unreachable --no-reflogs   # no output

git branch -a --contains <commit>     # no output

git show <commit>                     # still shows up

如果它不是reflog而不是分支,...它必須是一個標(biāo)簽!


git tag                             # showed several old tags created before the cleanup

我刪除了標(biāo)簽git tag -d <tagname>并重新進(jìn)行了清理,舊的提交已經(jīng)消失。


查看完整回答
反對 回復(fù) 2019-07-31
  • 3 回答
  • 0 關(guān)注
  • 1221 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號