我正在使用以下方法創建我的 git 存盤庫的增量包:
#!/bin/bash
if [ ! -f ./source0.bundle ]; then
git bundle create source0.bundle --all
elif [ $(git rev-parse HEAD) != $(git bundle list-heads source0.bundle | head -1 | cut -d' ' -f1) ]; then
declare -i LARGEST_NUMBER=$(ls | grep "source.*\.bundle" | tail -1 | grep -o '[0-9]*')
LARGEST_NUMBER_PLUS_ONE=$((LARGEST_NUMBER 1))
git bundle create source${LARGEST_NUMBER_PLUS_ONE}.bundle $(git bundle list-heads source${LARGEST_NUMBER}.bundle | head -1 | cut -d' ' -f1)..HEAD
fi
它創建source0.bundle, source1.bundle, source2.bundle....
要恢復捆綁包,我必須運行:
$ git clone source0.bundle extract
$ cd extract
$ for ((i = 1 ; i < 3 ; i )); do git pull ../source${i}.bundle; done
這是一個好方法還是我使事情復雜化?
uj5u.com熱心網友回復:
man git-bundle
描述 創建、解包和操作“捆綁”檔案。捆綁包用于 Git 物件的“離線”傳輸,而網路連接的另一端沒有活動的“服務器”。
這是我第一次聽說 git bundles。如果您需要在某處維護存盤庫的副本,您可以創建一個遠程到本地檔案夾,例如:
git remote add secondary /backup/foo/bar.git
然后你可以推送到這個遙控器。
git push secondary master
有一些怪癖,例如無法推送到已檢出的遠程,但您可以將其設定為“裸”遠程,就像在“服務器”遠程中一樣。
git init --bare /backup/foo/bar.git
推送到裸倉庫與推送到 github 或 bitbucket 相同。
在我看來,除非你知道你需要捆綁,否則你不需要捆綁。如果有疑問,您不需要它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/332860.html
