Git 列出上次推送中更改的文件数/一次推送中的本地提交数

Git 列出上次推送中更改的文件数/一次推送中的本地提交数,git,continuous-integration,Git,Continuous Integration,我需要获得一次推送操作中的本地提交数。 对于推送操作中的每个本地提交,在远程操作中将有相应的提交。因此,一次推送将在远程操作中创建多个提交。 我需要获取一次推送的本地提交数。否则,我需要获取以前的推送id。因此,如果我的推送有3个本地提交,则推送操作将在远程创建3个提交。因此,我以前的推送ID将是头^3 但是我需要得到这个数字。那么如何知道一次推送操作有多少次提交?有没有办法根据推送操作进行分组?假设您有以下情况: origin/branch A---B

我需要获得一次推送操作中的本地提交数。 对于推送操作中的每个本地提交,在远程操作中将有相应的提交。因此,一次推送将在远程操作中创建多个提交。 我需要获取一次推送的本地提交数。否则,我需要获取以前的推送id。因此,如果我的推送有3个本地提交,则推送操作将在远程创建3个提交。因此,我以前的推送ID将是头^3


但是我需要得到这个数字。那么如何知道一次推送操作有多少次提交?有没有办法根据推送操作进行分组?

假设您有以下情况:

origin/branch    A---B
                      \
(local) branch         C---D
然后,您可以
git push

origin/branch & (local) branch    A---B---C---D
推送之后
,上一次提交是
refs/remotes/origin/branch@{1}
。因此,您可以通过以下方式“撤消”推送:

git push -f origin refs/remotes/origin/branch@{1}:branch
或者,如果希望更改实际提交的数量:

git rev-list --count refs/remotes/origin/branch@{1}..refs/remotes/origin/branch

注:

  • 这可以从进行
    推送的存储库中执行。我不知道该命令是否能从另一个repo正常工作-尽管我预计在ref被更新为
    git fetch
  • 我不知道这将如何处理强制推送,或者强制将ref设置为特定提交id的任何其他操作

  • 另请参见git rev list--count refs/remotes/origin/branch@{1}..refs/remotes/origin/branch这并没有给出两个push.git rev parse'origin/master@{1}之间的提交次数'12:42:36致命:'origin/master'的日志只有1个条目这是由于此错误而失败的。我知道git reflog应该包含多个条目-要使此工作正常?它在本地工作。在克隆日志中是否也可以这样做repository@ashal在克隆回购中,这将是非常不一致的。我希望相同的方法也能起作用,但无法判断更改是否是由于一次推送造成的-即如果有人推送了两次,然后克隆用git fetch更新了引用--all
    ,这种方法将两次推送的提交显示为一次更新。在克隆的回购协议中,这唯一起作用的时间是事件的精确顺序:1)回购协议a和回购协议B都更新所有参考2)回购协议a将一些更改推送到分支机构3)回购协议B获取changes@ashal基本上,你要寻找的东西很难/不可能保证——因为这不是(通常)需要的东西被认为很重要。它在一些非常特殊的情况下可用,但我不建议将其作为任何常规流程的一部分。你为什么要找这些信息?你想达到什么目标?