查看本地和远程Git repo之间确切的差异/提交记录

21

设置:有3个git存储库-在github上,本地和暂存服务器上。

我在本地进行开发,将其推送到github,暂存服务器拉取。

我不在暂存服务器上工作或提交更改,但很久以前可能这样做了。因为现在当我在暂存服务器上执行git status时,会收到以下消息:

On branch SOME_BRANCH
Your branch and 'origin/SOME_BRANCH' have diverged,
and have 4 and 32 different commit(s) each, respectively.

我的问题是:如何查看那些不在origin上的确切4个提交?


注意:我尝试了 git log --graph --pretty --abbrev-commit --oneline,但是历史记录太长了。所以我想知道是否有更好的方法。 - Uzbekjon
你的回答以及 git log origin..HEAD 非常好用。 关于重复问题,另一个问题想要取消分歧,而我想知道它是如何分歧的。 - Uzbekjon
当然,我应该说“相关的”。 - CharlesB
3个回答

26
git rev-list origin..HEAD

这会列出您的分支(HEAD)中不在源代码库(origin)中的提交。


2
添加 format=%B 可以获取提交信息,这很有帮助。 - Chris Pfohl
7
我了解:fatal: ambiguous argument 'origin..HEAD': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' 意思是:命令错误,无法识别参数'origin..HEAD',可能是由于未知的修订版本或者路径不在当前工作目录中造成的。使用'--'来将路径与修订版本分开,例如: 'git <command> [<revision>...] -- [<file>...]'。 - crmpicco
@crmpicco 尝试使用 git log origin..HEAD 命令。如果出现错误,则可能你的远程库不叫做 origin。尝试使用 git remote -v 命令。输出中是否包含 origin - Uzbekjon
2
你可能在不同的分支上。在这种情况下,请使用 git rev-list origin/<branch name>..HEAD,例如 git rev-list origin/my-feature-branch..HEAD,这应该可以解决问题。 - wpodgorski
1
“format” 在 “rev-list” 中似乎不是一个有效的选项,但是使用 “--pretty” 可以让我获得日志样式视图。 - ryanjdillon
显示剩余2条评论

9

一般来说,如果你的远程仓库叫做foo,你的分支叫做bar

git rev-list foo/bar..HEAD

@charlesb是在名为origin的远程主分支中的答案。


1
显示存在于远程但不存在于本地的提交记录:
git rev-list HEAD..origin --pretty

显示本地存在但不在远程的提交记录:

git rev-list origin..HEAD --pretty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接