簡體   English   中英

使用git clone --depth 1克隆repo后,如何獲取遠程分支

[英]How do fetch remote branch after I cloned repo with git clone --depth 1

我有很長的歷史回購,所以克隆使用

git clone <url> --depth 1

現在我在主分公司。

如何獲取名為'feature / my-feature'的遠程分支,該分支早先已分支3次提交?

我試過了:

git checkout -b feature/my-feature  origin/feature/my-feature

git fetch -all

但我仍然只看到主分支

您可以通過指定獲取深度來嘗試強制它:

git fetch --depth=999999

深度是提交的數量。 請注意,當您執行克隆時,clone實際上會執行提取,並且深度與提取中指定的深度相同。

如果需要,將該數字設為更大!

編輯

你也可以/可能 - 應該使用加深 - 相同的語法,但它有效地從你最后指定的深度的位置取消..所以它更有效:

git fetch --deepen=999999

它可能取決於你的git版本,但最后一個....

編輯2

剛看完git docs時看到了這個....

git fetch --unshallow

這將是最好的方式(不確定它在哪個版本中實現,我沒有嘗試過....但看起來像是要使用的東西)。

TL; DR

你需要:

git config --add remote.origin.fetch \
    +refs/heads/feature/my-feature:refs/remotes/origin/feature/myfeature

要么:

git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

其次是:

git fetch
git fetch --depth=<number>
git fetch --deepen=<number>
git fetch --unshallow

說明

當你做一個淺的克隆時,Git會調整件事:

  • 要獲取和更新的默認分支(s)或標簽集;
  • 初始提取的深度。

(運行git clone是一種簡寫,就像它一樣,用於執行一系列包含git initgit remote addgit fetchgit checkout的Git命令。如果需要,可能還會使用更多命令。)

特別是, - --depth 1具有添加--single-branch的副作用。 如果你還沒有使用顯式的--no-single-branch取消它,Git將配置fetch行,就好像你已經運行:

git config remote.origin.fetch +refs/heads/<branch>:refs/remotes/origin/<branch>

這告訴后來的git fetch命令帶來給定的<branch> ,而不是其他的。

普通(非淺,非單分支) git clone使用默認設置:

git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

它告訴每個后來的git fetch帶來每個分支。

然后,將所有將來的fetch操作配置為單分支,淺克隆使用指定的--depth獲取,該命令使用名為.git/shallow的文件插入特殊的“移植”條目。 這些會影響克隆的整體有用性(但在任何現代Git中都要少得多); 有關這方面的更多信息,請參閱使用--depth 1進行淺層克隆是否安全,創建提交並再次提取更新? 但是,請注意,這不會保留--depth數字。 它只是縮短了初始提取時間。 未來提取的行為,特別是那些使用不同引用名稱的行為,很難從中預測。

如果你運行git fetch --unshallow ,Git會找到所有淺層截止點,並在此之前重新獲取所有歷史記錄。 然后Git完全刪除了特殊的.git/shallow文件,克隆的行為就像一個非淺的克隆。 這與克隆是否像--single-branch克隆的行為無關。

如果你使用特定的--depth--deepen運行git fetch ,Git會根據需要設置新的淺截止值,將深度設置為你指定的數字,或者用你指定的數字增加任何現有的淺截止值。 如果有多個分支,它們的各種截止之間的關系是復雜的(它都是基於圖形行走而沒有代碼檢查或測試,很難說Git在一些棘手的情況下會如何表現)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM