在master和branch之间的git前面/后面的信息?
我已经创build了一个分支在我推到Github
本地回购( test-branch
) test-branch
。
如果我去我的Github
帐户,并select这个test-branch
它显示的信息:
This branch is 1 commit ahead and 2 commits behind master
我的问题是:
- 我怎样才能在本地显示这个信息(即:在terminal上显示这个信息的命令,而不是打开
Github
看到它)? -
我知道我可以看到分支之间的差异使用:
git diff master..test-branch
或使用
Meld
(我更喜欢):git difftool master..test-branch
但我想知道是否有办法看到前面和后面的承诺分开。 IE:有没有一种方法可以certificate1自己承诺 ,然后自己承诺呢?
这里有一个技巧,我发现在本地比较两个分支(任何两个),并显示多less提交每个分支领先于另一个(更一般的答案在您的问题1):
git rev-list --left-right --count master...test-branch
这给你输出像
1 7
这意味着:和主人相比,testing分支有7个提交,1个提交
您也可以比较origin/master...master
等分支来查找分支在其远程分支前后的提交数量
首先要看看你在本地有多less修改,你应该做一个git fetch
来确保你有远程的最新信息。
git status
的默认输出告诉你前后有多less个修订,但通常我觉得这太冗长了:
$ git status # On branch master # Your branch and 'origin/master' have diverged, # and have 2 and 1 different commit each, respectively. # nothing to commit (working directory clean)
我更喜欢git status -sb
:
$ git status -sb ## master...origin/master [ahead 2, behind 1]
事实上,我只是简单地将它git s
,这是我用来检查状态的主要命令。
要看到master
的“提前修订”中的diff,我可以从origin/master
排除“后面的修改”:
git diff master..origin/master^
要看到origin/master
的“修订版本”中的差异,我可以排除origin/master
的“提前修订”:
git diff origin/master..master^^
如果前面或后面有5个修改版本,可能会更容易这样写:
git diff master..origin/master~5 git diff origin/master..master~5
UPDATE
要查看提前/后退修订,分支必须configuration为跟踪另一个分支。 对我来说,这是我克隆远程存储库时的默认行为,并在我用git push -u remotename branchname
推分支git push -u remotename branchname
。 我的版本是1.8.4.3,但只要我记得它一直在这样工作。
从版本1.8开始,您可以像这样设置跟踪分支:
git branch --track test-branch
从版本1.7开始,语法是不同的:
git branch --set-upstream test-branch
使用Git 2.5+,您现在可以看到所有分支被推送到分支的其他选项。
git for-each-ref --format="%(push:track)" refs/heads
请参阅“ 查看未压缩的Git提交 ”
在完成git fetch之后,可以运行git status来显示本地分支在分支的远程版本之前或之后的提交数量。
这不会告诉你在一个不同的分支前面或后面有多less个提交。 你的select是完全不同的,看github,或使用像上面链接Vimhsa的解决scheme: 所有回购的Git状态
这可能不会直接回答你的问题,但为什么不使用SourceTree