bundle和存盤庫上有很多主題unbundle,但我找不到使用 reflog恢復它的方法。
git bundle create mybundle --all
現在git clone mybundle清除 reflog 并且git init && git bundle unbundle mybundle……什么都沒有?
有人可以解釋為什么unbundle命令似乎沒有效果,以及使用 reflog 而非復制.git目錄來打包/解壓完整存盤庫的最佳方式是什么?
uj5u.com熱心網友回復:
Bundles,由 讀寫,分兩步git bundle實作協議,而不是一步。git fetch即使兩個存盤庫之間沒有可用的網路連接,這也允許您執行操作。例如,假設您在實驗室中有計算機 A,而計算機 B 在還沒有互聯網的山頂上操作望遠鏡。您想為計算機 B 帶來軟體更新,因此您在實驗室的計算機 A 上構建了一個“捆綁包”,將其寫入 USB 密鑰或其他任何東西,然后開車上山,然后用它來更新計算機 B。
如果您確實有一個作業網路,您將開車上山(或只是遠程登錄)并git fetch在計算機 B 上運行。這不會從計算機 A 復制 reflogs。Git 存盤庫的 reflogs特定于該存盤庫,并且這里有兩個單獨的存盤庫:計算機 A 上的一個保存它們的reflog,計算機 B 上的一個保存它們的(不同的)reflog。
由于git bundle復制了git fetch將要執行的操作,因此不會按設計更新 reflogs。
git bundle unbundle mybundle什么也沒做?
它運行git index-pack。這不是供人類使用的:它是git fetch用來運行的。
[復制] reflog 的最佳方法是什么...
reflog 用于本地存盤庫上運行的命令,并由其維護。復制整個.git目錄會大量復制存盤庫,包括 reflog,這是唯一的“普通用戶”方法。您可以使用git reflog show轉儲存盤庫 A 上的現有 reflog,然后使用一系列git update-ref命令在存盤庫 B 上添加新條目,但這些將是具有新日期的新條目,而不是現有條目的副本。
簡而言之,存盤庫并不是要共享的。 提交是共享的,而不是包含它們的存盤庫:每個存盤庫都是私有的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/460228.html
標籤:混帐 git-reflog
上一篇:用于控制父子版本的工具
