关于git:你的分支在X commits之前领先于’origin / master’。

Your branch is ahead of 'origin/master' by X commits. How to find the X commits?

本问题已经有最佳答案,请猛点这里访问。

我正在使用以下命令检查X提交:

1
git log --author=<my-name> -<X>

但问题是,我意外地从另一个存储库中提取了代码,并将提交从存储库添加到了本地Git存储库中。

所以我不能使用上面的命令,因为新提交包含一些其他作者。

  • 如果您的工作副本是干净的(没有未提交的更改),您可以使用stackoverflow.com/q/1223354/11343返回到拉之前的状态。
  • @Charlesb"Git Reset--Hard"在拉之前不会进入状态。这条消息仍在继续。
  • 您需要找到在拉取之前签出的提交哈希,并将其传递给reset --hard,请阅读我提到的问题
  • 您对"x提交"是什么意思?本地而非远程存在的提交量?您创建的提交量?这个问题对你要找的东西有点模棱两可。
  • @本地存在但不远程存在的提交量。


命令

1
git log origin/master..master

显示在master上但不在origin/master上的提交。

  • 它不会显示承诺。它显示我的本地存储库和远程存储库中存在一些提交。
  • 也许我误解了你的问题…
  • 根据你得到的选票接受答案:d


我为这个命令创建了一个别名,列出了尚未推送的提交。

git log --branches --not --remotes --decorate --oneline

< /块引用>

这是在查看未执行的git提交时发布的命令cxreg的变体。

还有很多其他有用的方法来解析该日志中的提交树。


treeish..treeish符号的作用是准确地看到第二个引用中存在的提交,而不是第一个引用中存在的提交。从Git日志帮助:

A regular D..M computes the set of commits that are ancestors of M, but excludes the ones that are ancestors of D. This is useful to see what happened to the history leading to M since D, in the sense that"what does M have that did not exist in D".

使用git loggit show时,您可以输出一个列表,其中包含D..M差异中每个提交压力的一行:

1
git show -s --oneline branch..HEAD

1
git log --oneline branch..HEAD

将其与字数配对,您就可以准确地输出要查找的提交数:

1
git log --oneline branch..HEAD | wc -l

  • 我试过上面的命令。我根本没有得到任何产出。
  • 如果您没有收到任何错误,并且show/log与上面的打印内容一样没有任何内容,那么这意味着,假设A..B中的B已经包含了A中的所有内容,并且没有打印内容。尝试反转它,或者尝试使用一些您确信有区别的提交。例如,如果使用HEAD^..HEAD尝试,则必须显示单个提交。
  • 以上所有评论仅与本地回购进行比较。如何与远程回购进行比较?
  • 使用格式为remote/branch的引用,就像origin/master一样。如果您的本地和远程分支的名称相同,并且您的远程分支是origin,那么您可以执行origin/branch..branch。按照您在问题中的描述,您可能需要origin/master..HEAD


此问题已在另一个帖子中得到解答:

1
git log origin/master..HEAD

(请参阅查看未处理的git提交)


我用这个:

1
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

它以图形的形式显示提交,其中包含所有分支及其名称。

我的建议是在~/.gitconfig中为它创建别名

  • 我认为它包含了承诺。但它显示了太多的信息。如何从中识别X提交?
  • 当然,您可以添加--author= -。或者这不是你想要的吗?