Git 如何从本地和远程分支获取所有提交SHA ID?

Git 如何从本地和远程分支获取所有提交SHA ID?,git,git-commit,git-log,Git,Git Commit,Git Log,我正在尝试获取特定分支的所有提交id的列表 我只知道gitlsremote | awk'{print$1}'给出了所有分支/头的最新提交sha 我的目标是找出从git rev parse获取的本地最新提交是否存在于从远程检索的所有提交的列表中。如果是这样,我需要重新设置基础,如果远程上最新的提交SHA出现在本地提交SHA列表中,但不是我的最新提交SHA,这意味着我的本地分支已向前移动,我不需要重新设置基础,只需推送即可。如果您尝试的是确定您的本地分支是否已偏离远程分支,我认为通过git log和

我正在尝试获取特定分支的所有提交id的列表

我只知道
gitlsremote | awk'{print$1}'
给出了所有分支/头的最新提交sha


我的目标是找出从
git rev parse
获取的本地最新提交是否存在于从远程检索的所有提交的列表中。如果是这样,我需要重新设置基础,如果远程上最新的提交SHA出现在本地提交SHA列表中,但不是我的最新提交SHA,这意味着我的本地分支已向前移动,我不需要重新设置基础,只需推送即可。

如果您尝试的是确定您的本地分支是否已偏离远程分支,我认为通过
git log
和。例如:

git log <local-branch>...<remote-branch> --oneline
其中
表示提交在右侧,但不在左侧


编辑:除非您正在编写脚本,在这种情况下,使用s中建议的选项是更好的选择,因为您可以只检查退出代码。

“我不需要执行rebase,只需按一下即可。”——
git rebase
如果
是当前分支的祖先,则没有任何效果。您始终可以在远程分支上重新设置本地更改的基础。您可以使用。如果
的祖先,并且比您当前的方法快得多,那么它将以code
0
退出。干系人不想使用合并策略,并且此逻辑实现是另一个脚本的一部分,我想避免在不需要运行rebase命令的情况下运行rebase命令,所以只需强制推进开发分支即可。但是对于
git日志--单行
git fetch
必须事先执行。
git merge base
用于在两个或多个提交之间查找公共父级,这也是
git rebase
所做的。至于第二条评论,如果要比较本地分支和远程分支,则必须运行
git fetch
git log <local-branch>...<remote-branch> --oneline --left-right