簡體   English   中英

Git:給定遠程跟蹤分支-如何找到它正在跟蹤的遠程/分支

[英]Git: Given remote tracking branch - How to find which remote/branch it is tracking

我有特殊的fetchspec遙控器

[remote "devall"]
url = https://BNahum90789@dcilpa670/scm/devops/dev4all.git
fetch = +refs/heads/dev/BNahum90789_2/*:refs/remotes/dev_BNahum90789/*

現在我推送到遠程:

git push -u devall my:dev/BNahum90789_2/my_on_remote

因此,我的遠程跟蹤分支如下所示:

git rev-parse --symbolic-full-name dev_BNahum90789/my_on_remote
refs/remotes/dev_BNahum90789/my_on_remote

給定此遠程跟蹤分支'refs / remotes / dev_BNahum90789 / my_on_remote',我如何找到遠程的名稱並在remote上分支? (請注意,它不包含遠程名稱或本地跟蹤分支!!!)

(我能想到的唯一方法是遍歷所有遙控器的所有提取規格,並找出匹配的遙控器)

謝謝波阿斯

您是正確的,對於像這樣的非常困難的情況,您必須遍歷所有遙控器的所有提取規范。 這類似於Git在獲取時在內部執行的操作:它獲取另一個Git呈現的每個引用(如git ls-remote remote-url ),並通過該特定遙控器的所有fetch行運行它,以查看名稱( s)映射到。 如果一個以上的輸入名稱映射到該輸出名稱,則錯誤。 1

在您的情況下,您沒有輸入名稱,但是有輸出名稱。 無法保證從輸出名稱到可能的輸入名稱之間存在唯一的映射。 當然,您可以在該git ls-remote上運行git ls-remote來查看其具有的輸入名稱,從而重復Git會做的工作。

(從本地分支名稱中查找要簡單得多,這些分支名稱要么將遠程跟蹤名稱設置為上游名稱,要么不設置。)


1在某些版本的Git中,您沒有得到任何實際的錯誤,只是得到了奇怪的行為。

 [remote "devall"] url = https://BNahum90789@dcilpa670/scm/devops/dev4all.git fetch = +refs/heads/dev/BNahum90789_2/*:refs/remotes/dev_BNahum90789/* 

Git默認將遠程名稱嵌入到遠程跟蹤分支名稱中。 當您取出它時,您沒有破壞任何東西,跟蹤rtb的所有內容仍然會跟蹤它們,獲取仍會更新它們,一切仍然有效。 這只會使它很難遵循。

我如何找到遙控器的名稱並在遙控器上分支

查找將您映射到您的rtb名稱的refspec。

git config --get-regexp fetch refs/remotes/dev_BNahum90789

查看映射到該rtb名稱的所有refspec。 就您而言,至少

remote.devall.fetch +refs/heads/dev/BNahum90789_2/*:refs/remotes/dev_BNahum90789/*

一次性即可輕松完成映射。 如果您將多個遙控器映射到可能會引起麻煩的同一跟蹤前綴,我認為這並不是您的第一個指示,因此我將忽略這種可能性。

順便說一句,我有

git config alias.grl '!f() { git config --local --get-regexp "${@-.}"; }; f' 
git config alias.gr '!f() { git config --get-regexp "${@-.}"; }; f'

這默認使搜索顯示所有內容,並使搜索更容易鍵入, git grl fetch BNahum可能會做到這一點。

暫無
暫無

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

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