(Stash =本地托管的Bitbucket。)
我有一个典型的git工作流程:创建一个分支,对其进行处理,定期将其推送到Stash,定期关闭master
,通过Stash合并到master
。
结果是Stash中的pull请求只包含正确的提交。
git
查找这些提交? git log
确实包含它们,但git reflog <my-feature-branch>
仅显示其中的一部分。答案 0 :(得分:1)
更新 - 来自评论,您说您在合并分支后以及经过一些重组后正在进行分析。我通常不认为这很重要,因为:
1)在合并之前你有my_feature_branch
坐在提交上,或者你没有。您已经提到能够使用git log
查看提交,因此我假设找到分支提示不是问题。
2)将事物重新置于主人身上通常不会改变master..my_feature_branch
或master...my_feature_branch
(在他们各自的背景下)的含义。
但是,因为我认为你不是那种阅读答案的第一句话的人,然后在没有尝试答案给你的建议的情况下撰写防御性评论,这表明你可能已经做了一些反思> 会改变分支之间的关系 - 在这种情况下,应该在问题中详细说明该rebase的性质。
你说你明白git不知道拉请求的任何内容,但你根据git知道的事情解除比较并继续询问是否有办法让git告诉你有关拉取请求的信息...... ,没有。你想要的是my_feature_branch
在创建PR时指向的提交历史,减去master
同时指向的ocmmit的历史记录。您可能已经完成了使其复杂化的操作,或者您可能只认为自己有。
如果当时master
指向的提交可以从master
到达(通过父指针);如果你有任何ref指向当时指向的提交my_feature_branch
(或SHA ID),那么我已经推荐的符号将起作用。
即使my_feature_branch
被重新命名,只要它的新基数仍然在master
的历史记录中并且rebase没有删除或编辑提交,相同的表示法仍然可以使用重写提交对应旧的my_feature_branch
提示。
如果你以其他方式重写my_feature_branch
(并且没有跟踪原始提交),那么你最好的选择是在reflog中找到tip提交然后使用regular {{ 1}}和git log
(如下所述)使用该提交的SHA而不是分支引用名称。
请注意,pull请求不是“核心git”概念;它是托管回购服务的特殊之处。您正在检查的是一个分支,您已发出拉取请求。
我不明白你的第一个问题。正如您已正确识别的那样,git diff
显示了分支的历史记录。 reflog是其他东西(ref在这个特定克隆中指向的本地历史记录)并不是你想要的。我想git log
的麻烦是,如何让仅显示尚未掌握的提交?你可以通过
git log
(注意:在这种情况下有两个点。)所以,如果你有
git log master..my_feature_branch
此日志输出将列出x --- x --- x --- x <--(master)
\
A --- B --- C <--(my_feature_branch)
,A
和B
。
至于如何做差异,它是相似但有点不同:
C
(注意:这次是3点。)
这会自动查找git diff master...my_feature_branch
和master
的“合并基础”,并在基础上找到my_feature_branch
。