5
我有一個需要訪問大型git存儲庫的一小部分的竹構建。爲了節省時間和磁盤空間,我只想查看與構建相關的存儲庫部分。我已經知道淺層結賬。我想做的比這更多,並將結帳限制在一個文件夾(及其後代)中。如何在竹子構建過程中僅檢出一部分git存儲庫?
我看到這個選項,我覺得這是我有什麼用,但我一直沒能得到它的工作:
我怎樣才能做到最小結賬,我想要什麼?
我有一個需要訪問大型git存儲庫的一小部分的竹構建。爲了節省時間和磁盤空間,我只想查看與構建相關的存儲庫部分。我已經知道淺層結賬。我想做的比這更多,並將結帳限制在一個文件夾(及其後代)中。如何在竹子構建過程中僅檢出一部分git存儲庫?
我看到這個選項,我覺得這是我有什麼用,但我一直沒能得到它的工作:
我怎樣才能做到最小結賬,我想要什麼?
最簡單的可能是讓誰託管回購標籤並提交您想要的特定樹。例如,
上游:
git tag quickie $(git commit-tree $(git rev-parse HEAD:path/to/dir) </dev/null)
你:
git fetch upstream quickie
如果你想在上游回購自動跟蹤的一個分支子樹,你可以做(的適當的解密版本)像這樣:
sed -n 's,^[^ ]* [^ ]* refs/heads/master$,git update-ref refs/heads/master-subtree -m "Auto-tracking master" $(git commit-tree master:subtree -m "Auto-tracking master subtree" $(test -r refs/heads/master-subtree \&\& echo -p refs/heads/master-subtree)),p' | sh -x
這比它看起來更簡單。試試這個:
mkdir ~/tryitout && cd ~/tryitout && git init foo && git init bar --bare
cat >bar/hooks/post-receive <<'EOF'
sed -n 's,^[^ ]* [^ ]* refs/heads/master$,git update-ref refs/heads/master-subtree -m "Auto-tracking master" $(git commit-tree master:subtree -m "Auto-tracking master subtree" $(test -r refs/heads/master-subtree \&\& echo -p refs/heads/master-subtree)),p' | sh -x
EOF
chmod a+x bar/hooks/post-receive
cd foo
mkdir subtree && touch subtree/oooo && git add . && git commit -am-
git push ../bar master
晚更新 -
如果你與其他回購共享文件系統,你可以這樣做:
git clone --no-checkout /path/to/local/repo/.git subtree
cd subtree
git commit-tree origin/rev:subtree </dev/null | xargs git checkout -B peek
,你可以在反彈,將通過改變適合的轉,起源/主:包括,起源/下一個:包括,起源/ v1.4:somewhereelsenow,不管。
我通常有一個「空」分支大回購。 Git處理一個空目錄的特例:
git mktree </dev/null | xargs git commit-tree | xargs git checkout -b empty
ps.s. HEAD當然可以是任何你想要的版本 – jthill
但是,那麼標籤是否需要維護呢?也就是說,如果回購協議的相關部分發生變化,那麼我們需要將該變化挑選出來。或者我誤解了? –
@AndrewEisenberg你確實需要一個任何你想要獲取的參考資料。我將添加一行以顯示如何使上游自動跟蹤子樹 – jthill