我已经在我的本地仓库(test-branch
)中创建了一个分支进行测试,我将其推送到Github
。
如果我转到我的Github
帐户并选择此test-branch
,则会显示相关信息:
This branch is 1 commit ahead and 2 commits behind master
我的问题是:
Github
才能看到它)?我知道我可以看到分支之间的差异:
git diff master..test-branch
或使用Meld
(我更喜欢):
git difftool master..test-branch
但我想知道是否有办法分别看到提前和背后提交。 I.E。:有没有办法显示 1提前提交然后那些 2提交自己?
答案 0 :(得分:222)
这是我发现比较两个分支的技巧,并显示每个分支在另一个分支之前的提交数量(对于您的问题1的更一般的答案):
对于本地分支:
git rev-list --left-right --count master...test-branch
对于远程分支:
git rev-list --left-right --count origin/master...origin/test-branch
这给出了如下输出:
1 7
此输出表示:“与master
相比,test-branch
提前7次提交,1次提交。”
您还可以将本地分支与远程分支进行比较,例如origin/master...master
找出本地master
分支在其远程对等方面前后的提交次数。
答案 1 :(得分:32)
首先要看看你在当地有多少修改,你应该git fetch
确保你拥有遥控器的最新信息。
git status
的默认输出会告诉您前面或后面有多少个修订版,但通常我觉得这个版本太冗长了:
$ 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
的“提前修订”中的差异,我可以从origin/master
中排除“后面的修订”:
git diff master..origin/master^
要查看origin/master
“后面的修订版”中的差异,我可以从master
中排除“提前修订”:
git diff origin/master..master^^
如果前面或后面有5个修订版,那么写起来可能更容易:
git diff master..origin/master~5
git diff origin/master..master~5
<强>更新强>
要查看前/后修订,必须将分支配置为跟踪另一个分支。对我来说,这是克隆远程存储库时的默认行为,以及我使用git push -u remotename branchname
推送分支后的默认行为。我的版本是1.8.4.3,但只要我记得就一直这样。
从版本1.8开始,您可以像这样设置跟踪分支:
git branch --track test-branch
从版本1.7开始,语法不同:
git branch --set-upstream test-branch
答案 2 :(得分:8)
使用Git 2.5+,您现在可以使用另一个选项来查看配置为推送到分支的所有分支的前/后。
git for-each-ref --format="%(push:track)" refs/heads
了解详情
答案 3 :(得分:1)
执行git fetch之后,您可以运行git status来显示本地分支在分支的远程版本之前或之后的提交次数。
但这并不会显示它在不同分支之前或之后的提交次数。您的选择是完整的差异,查看github,或使用上面链接的Vimhsa解决方案:Git status over all repo's
答案 4 :(得分:0)
您还可以使用if productId.contains(product.productIdentifier) {
}
使其更漂亮:
awk
您甚至可以创建一个别名,该别名始终先获取原始数据,然后再比较分支
git rev-list --left-right --count origin/develop...feature-branch | awk '{print "Behind "$1" - Ahead "$2""}'
答案 5 :(得分:0)
要获取当前功能分支在 master 之前的提交次数,您可以使用以下命令:
git rev-list --left-right --count master...$(git branch --show-current)