查找本地分支正在追踪的远程分支。
查找本地分支正在追踪的远程分支。
这不是查找本地分支追踪的远程分支。如果我有多个远程仓库,它们中可能都有一个"master"分支。执行git branch
命令会返回"master",但我不知道我所在的master分支是在remoteFoo还是remoteBar上。例如,我可能会执行以下操作:
git clone someRepo.git cd someRepo git remote add anotherRemote otherremoteURL
然后执行git remote
命令显示:
someRepo anotherRemote
我可以使用git checkout -b master someRepo/master
或git checkout -b master anotherRemote/master
命令,而git branch
命令将在两种情况下都显示"master"。那么我如何获取第一部分的"someRepo"或"anotherRemote"呢?
你可能会认为我可以使用git remote show
命令,但它需要一个参数,即你想要获取信息的远程仓库的名称。
$ git remote show origin fatal: 'origin' does not appear to be a git repository fatal: The remote end hung up unexpectedly $ git remote show someRepo anotherRemote
通过git branch
命令,我可以得到当前分支的指示:
$ git branch hold * master old-stuff refactor
但在git remote
的输出中,却没有 "*" 符号。
找出本地分支正在跟踪的远程分支是一个常见问题,可以通过以下方法解决。
首先,可以参考这里的类似问题的解答:要获取当前分支正在跟踪的远程分支,可以使用以下命令:
git rev-parse --symbolic-full-name --abbrev-ref @{u}
但是,执行该命令可能会出现错误(error: No upstream configured for branch 'master')。这可能是由于使用的git版本问题导致的(我使用的是1.7.11.3版本)。
如果你的git版本是1.7.12或更高版本,那么这个命令应该可以正常运行。如果你的分支没有配置远程分支,那么可能存在其他问题。这是一个新分支吗?你是否已经将其推送到远程仓库?请执行git branch -a命令查看输出结果。
通过使用git remote -v
命令,可以查看本地分支所跟踪的远程分支。下面是一个示例输出:
dmasi@:/var/www/pirate_booty$ git remote -v origin git.org:dmasi/pirate_booty_calculator.git (fetch) origin git.org:dmasi/pirate_booty_calculator.git (push) dmasi@:/var/www/pirate_booty$ git remote -v show origin * remote origin Fetch URL: git.org:dmasi/pirate_booty_calculator.git Push URL: git.org:dmasi/pirate_booty_calculator.git HEAD branch: master Remote branch: master tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (up to date)
在这个示例中,可以看到本地分支master正在跟踪远程分支origin的master分支。
为了找到本地分支正在跟踪的远程分支,可以执行以下命令:git remote -v
或git remote -v show origin
。这些命令将显示远程分支的详细信息,包括fetch URL、push URL等。
感谢git remote
命令列出了所有的远程分支,并且git remote -v
命令显示了当前远程分支的状态,这样我就可以提取输出的第一行的第一个单词,并将其作为当前远程分支。
通过上述命令,可以方便地找到本地分支所跟踪的远程分支。
git status -sb命令非常容易理解和记忆。
-s代表以短格式输出。
b代表显示分支和追踪信息。
通过执行git status -sb命令,可以查看本地分支的追踪信息。
然而,在某些情况下,用户可能需要查找一个本地分支正在追踪哪个远程分支。这种需求可能是为了了解分支之间的关联关系或者进行分支操作。
在git的官方文档中,并没有直接提供找出本地分支追踪的远程分支的命令。但可以通过一些其他的方式来实现。
解决方法:
1. 使用git branch -vv命令可以显示本地分支和追踪分支的详细信息,包括追踪的远程分支。
2. 使用git rev-parse命令获取本地分支所关联的远程分支的引用。
具体命令如下:
$ git branch -vv feature-branch 1234567 [origin/feature-branch: ahead 1] Commit message master 7654321 [origin/master] Another commit message
$ git rev-parse --abbrev-ref --symbolic-full-name feature-branch@{u} origin/feature-branch
通过上述方法,可以找出一个本地分支追踪的远程分支。这样就可以满足找出本地分支追踪的远程分支的需求了。