Git
如何獲取未在 git 中籤出的遠端儲存庫的遠端儲存庫
有沒有辦法使用 獲取未簽出遠端儲存庫的遠端儲存庫
git
?我的遠端 PC 上的點文件受版本控制(使用
yadm
)。這個儲存庫被複製在我的本地 PC 上(也使用yadm
)。但在我的本地 PC 上,我使用的是不同的點文件管理實用程序 (rcm
),它提供了更大的靈活性。由於
yadm
並rcm
在不同的基礎上工作(symlinks to ~
vs.bare git into ~
),我必須跳過箍來嘗試yadm
在我的本地 PC 上使用的東西:
- 取消連結我目前的符號連結點文件
rcm
- 簽出
yadm
-repository要撤消它,我必須
yadm
刪除檢出-repository時複製的所有文件- 符號連結文件
rcm
這很煩人。因此,我將我的 -repository 的本地
yadm
複製複製到另一個文件夾中。雖然我能夠看到本地主記憶體儲庫中的所有遙控器yadm
,但我只能HEAD
在複製的儲存庫中獲取yadm
。它看起來像這樣:
remote PC (1): commit a (old, not checked out), commit b (HEAD -> master) local PC - main repository (2): commit a (HEAD -> master), commit b (origin/master, not checked out) local PC - other repository (3): commit a (HEAD -> master), commit a origin/master
因此,在我的儲存庫上
3
,我只能看到送出a
(在儲存庫中籤出2
),但看不到送出b
(未在儲存庫中籤出2
,但應該在那裡可用)。我現在的問題是:我怎樣才能在我的儲存庫中獲得 commit b ,為什麼只ing 一切都3
行不通?git fetch
更新 1:對文本進行了少量編輯,以(希望)使問題更清晰。
由於每個儲存庫都不是裸儲存庫,至少在重要的地方,它們不是。因此,預設行為似乎是觀察到的,即儲存庫 3 只看到儲存庫 2 的簽出送出。
要覆蓋此行為,
git fetch
有一個可選refspec
參數,可用於專門獲取其他修訂版。將其映射到不同的分支可能會使這更容易一些。git fetch origin b
或者由於
origin/master
要送出b
,使用origin/master
as refspec 也應該起作用:git fetch origin origin/master
同樣,
b
在分支或標籤上送出可能會使此獲取更容易。如果不是這種情況,則有必要通過手動指定送出的雜湊來執行合併(儘管使用不會顯示它git log --all
)。