git如何处理来自两个不同远程仓库的相同分支名称?

Boo*_*oon 2 git git-checkout git-remote

如果我使用git remote add为repo 设置两个远程,并且两个repo包含一个具有相同名称的分支.当我使用git checkout切换到它时,git如何知道我打算使用哪个repo分支?

lar*_*sks 6

当我使用git checkout切换到它时,git如何知道我打算使用哪个repo分支?

它没有.通常情况下,如果存在歧义,例如在这种情况下,遥控器("origin"和"upstream2")都有一个devel分支:

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/devel
  remotes/origin/master
  remotes/upstream2/devel
  remotes/upstream2/master
Run Code Online (Sandbox Code Playgroud)

如果我只是试图git checkout devel得到:

$ git checkout devel
error: pathspec 'devel' did not match any file(s) known to git.
Run Code Online (Sandbox Code Playgroud)

我需要明确:

$ git checkout -b devel remotes/upstream2/devel
Branch devel set up to track remote branch devel from upstream2 by rebasing.
Switched to a new branch 'devel'
Run Code Online (Sandbox Code Playgroud)

将此与我只有一个遥控器的情况相比较:

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/devel
  remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

然后:

$ git checkout devel
Branch devel set up to track remote branch devel from origin by rebasing.
Switched to a new branch 'devel'
Run Code Online (Sandbox Code Playgroud)