在我的项目中,需要使用来自功能分支的拉取请求将更改添加到master分支。当前,该存储库已配置为禁止直接推送到母版,但在过去是允许的。
是否可以找到没有推送请求而直接推送到master
的提交?
答案 0 :(得分:0)
没有拉取请求,您不能上传新的提交。例如,当您在Github Desktop上进行新提交时,您只需重写数据,然后针对它进行新提交,只需编辑实际的提交即可。当然,您可以按Delete数据,但会丢失部分工作。
答案 1 :(得分:0)
答案 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)
您在项目中使用的合并策略是什么?变基还是合并策略?您保留merge-commit吗?
答案 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
将列出在主服务器上进行但未合并的所有提交。