在我的项目中,需要使用从特性分支发起的拉取请求来向主分支添加更改。目前,仓库被配置为禁止直接推送到主分支,但过去允许这样做。
是否可能找到直接推送到master
的提交记录,而没有拉取请求呢?
在我的项目中,需要使用从特性分支发起的拉取请求来向主分支添加更改。目前,仓库被配置为禁止直接推送到主分支,但过去允许这样做。
是否可能找到直接推送到master
的提交记录,而没有拉取请求呢?
git ls-remote u://r/l refs/pull/*/head
列出它们,尝试在 Atlassian 的服务上找到等效的方法感觉像在油脂中游泳,因此您需要自己解决这个问题。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
这相当于从主分支中删除所有属于PR的提交。要从主分支中删除PR的提交,我可以告诉一个手动方法,不是很高效,但可能还可以:
1)将主分支复制到临时分支以进行操作。
git checkout -b master-sandbox
2) 查找PR的所有提交哈希值(您可以在Bitbucket PR请求等在线平台上找到它们并复制)
3) 根据哈希从master-sandbox
中删除提交
git rebase -i HEAD~1000
其中 HEAD~1000 表示最近的 1000 次提交,或者使用提交哈希值进行检查,例如:git rebase -i <hash>
。这将打开一个编辑器,其中包含提交列表。找到上面收集的提交哈希值并将其删除。
剩下的提交是不属于 PR 的提交。对所有 PR 重复此操作,剩下的提交即为直接提交的提交。
git config --local merge.ff only
(有几种方法,建议查阅文档),以及在您的代码仓库(github、bitbucket等)中。 - AElMehdigit branch --contains=A_GIVEN_BRANCH/COMMIT_ID
吗? - AElMehdigit branch --contains=...
的情况下,我已经尝试过了,但问题是对于 git 而言,从一开始到当前分支指针的历史上的每个提交都被认为包含在该分支中。即使该提交是在分支创建之前创建的。 - pkalinow