Git斷點續傳和離線增量更新的實現

Aimeast發表於2014-01-12

cnblogs官方支援Markdown寫部落格了,親測一下。
____

什麼是Bundle檔案

Bundle檔案是在packfile檔案的基礎上增加了程式碼庫的元資訊。通俗的說bundle檔案就是一個便攜版的程式碼庫,裡面可以包含程式碼庫所必須包含的資訊。

如何建立Bundle檔案

參考git手冊git-bundle

git bundle create <file> <git-rev-list-args>

如下程式碼可以建立master分支的bundle

git bundle create repo.bundle master

如下程式碼可以建立master分支最新10次更新的patch的bundle

git bundle create repo.bundle master~10..master

如何匯入Bundle檔案

繼續參考git手冊git-bundle
可以從bundle檔案clone一個程式碼庫,同理可以嘗試一下從bundle檔案fetch最新的程式碼。
如下程式碼可以從bundle檔案中fetch最新程式碼

git fetch repo.bundle

如下程式碼可以從bundle檔案中clone完整的程式碼庫

git clone repo.bundle

回到標題,如何斷點續傳,如何離線更新

都說到這了,還要告訴你如何斷點如何離線嗎?網上斷點下載bundle檔案就可以了。至於離線嘛,拿個u盤拷回去就可以了。

舉一個例子(是“例子”還是“栗子”)

  1. clone一個新的程式碼庫 git clone https://github.com/Aimeast/GitCandy.git

  2. 進入程式碼庫資料夾檢視HEAD git show --quiet

commit 6f11ee23c7a4218674ff48590065b11270e180bf
  1. 生成最近5次提交的bundle git bundle create ../patch.bundle dev~5..dev

  2. 重置當前分支到前5次提交 git reset --hard dev~5

HEAD is now at cb19dcf Fix DetectEncoding
  1. 執行gc並強制刪除所有過期物件 git gc && git prune --expire 0

  2. 從bundle檔案獲取到最新程式碼 git fetch ../patch.bundle dev

  3. 重置到最新的程式碼 git reset --hard FETCH_HEAD

HEAD is now at 6f11ee2 Update according to @nulltoken 's advice

打個小廣告

Git Candy是一個ASP.NET MVC實現的git版本控制平臺,支援公共和私有程式碼庫。
歡迎您的使用!

原始碼在:http://github.com/Aimeast/GitCandy

演示在:http://git.53wb.com

對官方Markdown的評價

功能太原始,支援的太少,bug太多,跟GitHub Flavored Markdown的差異太大了。在github和Dingus完美預覽的md在這裡就錯誤百出,多次多次修改預覽後才成這個樣子,無法接受!

強烈建議相容GitHub Flavored Markdown

並且提供一套預設的CSS供Markdown使用

相關文章