我们正在使用GitHub来存储我们的代码存储库,我们希望所有开发人员在进行本地开发人员测试和合并之前确保分支与master保持同步。
使用master的提交更新分支有两种方法:
select
to_tsvector('simple', replace('pro-physik.de', '.', ' ')) @@
to_tsquery('simple', replace('pro-physik:*', '.', ' '))
合并到我的分支master
,并推送feature_branch
feature_branch
重新定位到主分区,并强行推送feature_branch
。鉴于相关团队目前正在使用1.(合并工作流程),我该如何看待:
feature_branch
分支中的提交次数,但远程master
中没有。最好有一些与GitHub集成的东西,但我也想知道如何从命令行执行此操作。
我知道我可以做feature_branch
,但这实际上给了我所有的更改(并且是针对本地分支)。我只想知道前后提交的数量,方式与本地git diff master..feature_branch
和远程master
之间的显示方式相同
答案 0 :(得分:3)
Jeff Puckett II's answer很好,您也应该关注他的link to this other answer。但是你想要的实际上是直接建立在Git上的:
git rev-list --count master..feature
和
git rev-list --count feature..master
您可能希望将其组合成非常短的别名或脚本:
echo feature is $(git rev-list --count master..feature) commits ahead of master
echo and $(git rev-list --count feature..master) commits behind master
事实上,这只是git status
和git branch -vv
所做的事情,尽管他们也会首先检查零提交。
这是一个简短的(非常简短,对我而言:-))解释。
log
和rev-list
几乎是同一个命令 git log
和git rev-list
都会查看整个提交范围。最重要的区别是git log
向您显示日志消息(以及可选的补丁),而git rev-list
默认显示原始提交哈希值。
但是,您可以git rev-list
为计数提供它将列出的提交数量,而不是原始哈希ID。而且,正如您将在that other answer上的漂亮图表中看到的那样,stop..start
双点语法( 除git diff
之外)非常特别的 1 )告诉Git"给我所有你可以找到的提交,从start
开始,排除你可以找到的所有提交从{ {1}}"
如果您找到stop
上的所有提交,然后删除两个分支上的所有提交,那么您只剩下<的提交< em>仅<{1}}上的。然后,您feature
计算。这些是您提前和#34;的提交,因此您将走多远。
(让feature
记录它们,每个记录在一行上,然后让git rev-list
计算行数,当然也可以。)
使用git log
反转这两个名称,让Git查找wc
上的提交,然后在两个分支上删除提交。这些就是你&#34;背后的&#34;。
feature..master
的输出对人类很少有用,主要用于脚本。事实上,这正是我上面提到的:一个双线脚本(或者甚至只有一行,但是在我的屏幕上并不适合这里)。
以下是一个值得思考的问题:我们如何知道使用名称master
和git rev-list
?我们怎么能指示 Git 知道这个?但是,让我们暂时离开。
1 这里的问题是master
迫切希望最多使用两个提交。带有两个和三个点feature
或git diff
的范围符号通常会生成一长串提交。 Git的master..feature
无论如何都无法处理这些问题。它可以只是拒绝接受这些符号 - 这本来是非常合理的,但实际上 - 但是,Git作者决定他们重复使用这些符号来表示相关的东西。
这意味着无论您在使用master...feature
diff
时学到了什么,在处理其他Git命令时都必须忘记它。 Sic transit gloria Git。
答案 1 :(得分:1)
而不是diff
git diff master..feature
使用log
git log master..feature
请参阅this answer以获得更好的解释。
因此,如果您只想要计数,请使用--oneline
并将其传输到字数行。
git log --oneline master..feature | wc -l