在我使用git从一个工作分支合并到我的主分支后,我有时想在合并发生之前找到找到master上的最后一次提交。我该怎么做?
答案 0 :(得分:8)
合并后确定提交的快速方法是使用reflog。
假设最后一次出现的操作是合并,那么:
git log HEAD@{1} -1
HEAD@{1}
指的是上一次操作之前的前一个HEAD,因此您可以使用log和reflog来解决它。
git log
将显示当前分支中的提交序列,因此在合并之后它将始终是合并提交,并且在它将从合并分支提交之前。 git reflog
显示存储库中的操作序列(例如merge,rebase)。正如文档中所解释的那样:
引用日志或" reflogs",在本地存储库中更新分支和其他引用的提示时进行记录。 Reflog在各种Git命令中很有用,用于指定引用的旧值。
答案 1 :(得分:4)
快速执行此操作的方法是键入
git log --pretty=format:'%h : %s' --graph
然后只需按下右侧的图表,直到找到合并点。你也可以
git log --pretty=format:'%h : %s' --graph > temp.txt
将输出放入文件temp.txt
,您可以在编辑器中打开该文件,并使用搜索工具查找合并等文本。
这种方法有助于回答许多关于你最新提交的谱系的其他问题,所以已经提出
alias git_graph="git log --pretty=format:'%h : %s' --graph"
在我的.bash_profile
文件中,所以我可以使用```git_log``来查看这些信息。
答案 2 :(得分:3)
如果您已将master
合并到# With the ancestry-path option, 'git rev-list branch..master' (or git log)
# will only list commits which are parents of 'master'
# *and* children of 'branch'
#
# If 'branch' was merged into 'master', the last commit in this list
# is the merge commit :
$ git rev-list --ancestry-path branch..master | tail -1
,以下是查找合并提交的一种方法:
master
合并前$ h=`git rev-list --ancestry-path branch..master | tail -1`
$ git log $h^
的状态是此提交的第一个父级:
*
答案 3 :(得分:1)
git log -1
另请参阅git log --help
或https://git-scm.com/docs/git-log
答案 4 :(得分:1)
仅获取合并点提交ID:
git rev-list origin..HEAD --max-parents=1 --max-count=1
答案 5 :(得分:0)
如果您知道合并提交的顺序,则可以使用以下命令:
$ git log -n 1 --pretty | grep Merge | head -1 | awk '{print $2}'
https://git-scm.com/docs/git-log
如果提交是合并的,并且如果pretty-format格式不是oneline,email或raw,则在Author:行之前插入另一行。该行以“ Merge:”开头,并打印祖先提交的sha1,以空格分隔。
答案 6 :(得分:0)
这是一个程序化解决方案。我们查询以下内容以获取合并发生之前的主提交的哈希值:
git merge-base master master~1
如果最后一个PR是合并文件,则master~1
属于PR。 merge-base
获取公共祖先的SHA,这将由于PR的结构而成为先前的主提交。
如果最后一个PR是壁球,那么master~1
就掌握了,这就是我们想要的。由于这次master~1
是master
的父提交,因此git merge-base master master~1
获得了共同祖先,因此正确返回了master~1
的SHA。
使用SHA,我们可以使用git log
等获取有关提交的其他详细信息。
请注意,如果有许多PR合并而没有先重新定位到最新的主服务器,则这可能不会给我们最后一次主服务器提交。但是,这与OP想要的一致,即合并之前的最后一个主提交 。
答案 7 :(得分:0)
正在研究相同的内容,这就是我想出的:
git log --merges -1 --format='%p' | awk '{print $2}'
说明:
--merges
– 仅显示合并提交(最小父项为 2 的提交)-1
– 仅显示最后一行日志--format='%p'
– 显示缩写的父提交哈希