我们如何为特定的遥控器运行git状态?

时间:2014-08-13 03:05:19

标签: git git-remote

我们的本地git存储库有两个遥控器。一个遥控器称为dev,另一个称为origin。当我们运行git statusgit status dev时,我们会收到以下消息:

# On branch 1.8.x
# Your branch is ahead of 'origin/1.8.x' by 4 commits.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean

该消息告诉我们origin遥控器的状态。那不是我们想要的。我们如何仅检查dev遥控器的状态?

2 个答案:

答案 0 :(得分:4)

以下是 git status如何获取该信息。

  • 我们在哪个分支?

    $ git symbolic-ref --short HEAD
    1.8.x
    

    (以上是查找的首选方法,一般情况下;如果您处于“分离的HEAD”模式,则会出错;或者:

    $ git rev-parse --symbolic-full-name HEAD
    refs/heads/1.8.x
    

    (这也有效,但只能为您提供“全名”:删除refs/heads/以获取分支名称。)

  • 什么分支是1.8.x的“上游”?

    $ git rev-parse --symbolic-full-name '@{upstream}'
    refs/remotes/origin/1.8.x
    

    (以上是更简单的方法,但再次只提供“全名”表单;这次你必须删除refs/remotes/以缩短它),或者:

    $ git config --get branch.1.8.x.remote
    origin
    $ git config --get branch.1.8.x.merge
    refs/heads/1.8.x
    $ git config --get remote.origin.fetch
    +refs/heads/*:refs/remotes/origin/*
    

    (这就是git如何计算出@{upstream}的符号全名 - 它有点复杂,因为你必须应用fetch 1 <的分支名称映射/ sup>这里)。

  • 一方或另一方有多少次修改?

    $ git rev-list --count origin/1.8.x..1.8.x
    4
    $ git rev-list --count 1.8.x..origin/1.8.x
    0
    

    也就是说,我们要求git rev-list计算从引用1.8.x(您当前的分支)可以访问的提交数量,而不是origin/1.8.x(您的上游)。答案是4,所以你“领先4”。然后,我们要求git rev-list计算从origin/1.8.x而不是1.8.x可以访问的提交数量。答案是0,所以你“落后于0”,git status可以安静下来。

git status命令可以完成所有这些工作,无论哪个分支设置为当前分支的“上游”。因此,您可以使用git branch --set-upstream-to 更改上游 - 在这种情况下,将其从origin/1.8.x更改为dev/1.8.x - 从那时起,您将获得该信息,{em>仅来自git status的信息。 (将其更改回来以获取要切换回的信息。)


如果你想暂时获取它而不切换分支,你需要做更多或更少的“git status做什么”,但是使用另一种“上游”,在这种情况下,dev/1.8.x。编写执行此操作的shell脚本并不困难,特别是如果您只是假设分支 B 映射到分支 rmt/B 远程 rmt (那么你不需要做所有复杂的映射)。也就是说,如果您在分支机构zog上,并且您询问远程bob,则只需为rev-list和{{1}执行两个bob/zog..zog }。


1 实际上,如果有多个ref-mapping zog..bob/zog行,你真的想要git config --get-all remote.origin.fetch。但是这种反映映射很痛苦;可能应该有一个git plumbing命令为你做。

答案 1 :(得分:3)

您可以使用&#34; git log&#34;,如果有的话,它会提前列出提交。

git log dev/1.8.x..HEAD

git log dev/1.8.x..1.8.x

如果您想了解更多简短信息,可以尝试:

git log --graph --pretty=oneline dev/1.8.x..HEAD