Git-如何查找在特定git分支中完成的实际提交

时间:2019-03-29 04:20:27

标签: git version-control

我从t1分支创建了一个分支master,并在分支t1中进行了多次提交。 然后我在其他分支中进行了几次提交,在t1等中合并了其他分支。

现在我要find only those commits which I had made in branch t1(不是那些由于合并而来自master分支或任何其他分支的提交)

2 个答案:

答案 0 :(得分:1)

除非您使用请求请求流程,否则没有任何可靠的机制来记录针对特定分支完成的提交。

本地分支的名称可以是任意的。您可以创建本地分支foo,并将其新提交推送到分支bar。如果推送成功,我们只能确保为bar进行了提交。但这不能保证提交是在本地bar中进行的。如果允许您在没有拉取请求的情况下直接将foo推送到bar,则系统甚至没有永久记录将这些提交推送到bar。您可能会在合并提交的提交消息中找到一些线索,但是提交消息也可以伪造,更不用说您可能没有严格的提交消息格式规则。快速推送时,合并提交本身甚至不存在。重新引用也可能有一些线索,但是它们不可靠,因为它们与本地分支绑定并且不是永久的。

借助系统的请求请求流,Github,Gerrit和Gitlab等托管服务具有可靠的数据库,可记录将哪些提交合并到特定分支。它们提供了API或界面,使用户可以从数据库中检索这些记录。

您可以尝试以下方法:

git log t1 ^master --first-parent --no-merges

但是结果在理论上是不可靠的。

答案 1 :(得分:0)

如“ Git: How to list commits on this branch but not from merged branches”所述,您可以从开始(使用log --no-merges)开始:

git log --no-merges t1 master

这将避免任何合并提交。