我有远程特殊的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
鉴于此远程跟踪分支 '参/遥控器/ dev_BNahum90789 / my_on_remote' 如何在远程找到远程和分支的名称? (请注意,它不包含远程名称或本地跟踪分支!!!)
(我能想到的唯一方法就是查看所有遥控器的所有fetch-specs并查找哪一个匹配)
由于 波阿斯
答案 0 :(得分:1)
你是对的,对于像这样的非常困难的情况,你必须遍历所有遥控器的所有fetch-specs。这类似于Git在获取内部时所执行的操作:它接受另一个Git呈现的每个引用(如git ls-remote remote-url
所示)并在该特定远程的所有fetch
行中运行它,以查看它映射到的名称。如果有多个输入名称映射到该输出名称,那就是错误。 1
在您的情况下,您没有输入名称,而是输出名称。无法保证从输出名称到可能的输入名称存在唯一的映射。您当然可以在该遥控器上运行git ls-remote
以查看它们具有的输入名称,从而重复Git所做的工作。
(从本地分支名称转移起来要简单得多,这些名称要么将远程跟踪名称设置为上游,要么不这样做。)
1 在某些版本的Git中,你没有得到任何实际的错误,你只是得到了奇怪的行为。
答案 1 :(得分:0)
[remote "devall"] url = https://BNahum90789@dcilpa670/scm/devops/dev4all.git fetch = +refs/heads/dev/BNahum90789_2/*:refs/remotes/dev_BNahum90789/*
默认情况下,Git将远程名称嵌入远程跟踪分支名称中。当你把它拿出来时,你没有破坏任何东西, 跟踪r-t-b的一切仍然跟踪它们没有它,fetch仍然更新它们,它仍然有效。它只是让它更难以遵循。
如何在远程
上找到远程和分支的名称
查找将您的r-t-b名称映射到的refspec。
git config --get-regexp fetch refs/remotes/dev_BNahum90789
查看映射到该r-t-b名称的所有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
可能会这样做。