如何查找没有拉请求的情况下推送的提交?

时间:2019-05-09 11:51:14

标签: git bitbucket pull-request

在我的项目中,需要使用来自功能分支的拉取请求将更改添加到master分支。当前,该存储库已配置为禁止直接推送到母版,但在过去是允许的。

是否可以找到没有推送请求而直接推送到master的提交?

5 个答案:

答案 0 :(得分:0)

没有拉取请求,您不能上传新的提交。例如,当您在Github Desktop上进行新提交时,您只需重写数据,然后针对它进行新提交,只需编辑实际的提交即可。当然,您可以按Delete数据,但会丢失部分工作。

答案 1 :(得分:0)

您真正想要的是将功能分支与主分支进行比较。 如here所述,您可以使用

git diff master..yourbranch

以查看您的分支机构和主服务器之间的所有差异。

答案 2 :(得分:0)

这等效于从master中删除属于PR的所有提交。要从母版中删除PR的提交,我可以告诉一个手动方法,虽然效率不高,但是可以:

1)从master分支进行临时复制以进行处理

git checkout -b master-sandbox

2)查找PR的所有提交哈希值(您可以在网上找到它们,例如根据位桶PR请求并复制它们)

3)从master-sandbox

删除基于哈希的提交
git rebase -i HEAD~1000

其中HEAD〜1000表示最后一个1000次提交,或在要进行检查的位置使用提交哈希,例如:git rebase -i <hash>。这将打开一个带有提交列表的编辑器。找到以上收集的提交哈希并将其删除。 其余的提交不属于PR。 对所有PR重复此操作,其余提交均为直接提交。

答案 3 :(得分:0)

您在项目中使用的合并策略是什么?变基还是合并策略?您保留吗?

答案 4 :(得分:0)

如果保留了拉取请求,则只需检查每次合并到主节点的第二个父级是拉取请求即可。

Github将拉取请求保留为参考,因此您可以使用git ls-remote u://r/l refs/pull/*/head列出请求,试图在Atlassian的服务上找到与之等效的功能,就像在猪油里游泳一样,因此您可以自己弄清楚。

对于使用Github约定发布请求请求的仓库,类似

awk  'ARGIND==1    { prhead[$1]=1; next}
      !prhead[$3]  { print $0, "was not merged from a pull request" }' \
        <(git ls-remote u://r/l refs/pull/*/head)
        <(git rev-list --first-parent --merges master --parents)

会做到的。

您可以(不足为奇)推送回购协议中要接受的所有内容,因此在设置限制之前,有人可能已经推送了快速转发。这些将显示为对主服务器的非合并提交:

git rev-list --first-parent --no-merges master

将列出在主服务器上进行但未合并的所有提交。

相关问题