Git

如何獲取未在 git 中籤出的遠端儲存庫的遠端儲存庫

  • December 21, 2020

有沒有辦法使用 獲取未簽出遠端儲存庫的遠端儲存庫git

我的遠端 PC 上的點文件受版本控制(使用yadm)。這個儲存庫被複製在我的本地 PC 上(也使用yadm)。但在我的本地 PC 上,我使用的是不同的點文件管理實用程序 ( rcm),它提供了更大的靈活性。

由於yadmrcm在不同的基礎上工作(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/masteras refspec 也應該起作用:

git fetch origin origin/master

同樣,b在分支或標籤上送出可能會使此獲取更容易。如果不是這種情況,則有必要通過手動指定送出的雜湊來執行合併(儘管使用不會顯示它git log --all)。

引用自:https://unix.stackexchange.com/questions/624972