Я очищаю запросы на вытягивание репозитория git (PR). Был создан один PR для слияния ветки B, которая позже была признана устаревшей и удалена перед слиянием. В результате ветка B была удалена, и этот PR не отображается в списке запросов на вытягивание Bitbucket. Однако, если я использую git show-ref
, этот PR будет в списке ссылок, а также в истории удаленного репозитория. Есть ли способ очистить этот PR в удаленном репозитории?
master branch
|
|
| * branch B, Pull Request
| |
| /
| /
| /
|/
*
|
|
Дополнения: этот PR существует в удаленном репозитории. Я мог бы сделать голую копию на локальный и удалить локальный PR с помощью git reflog expire --expire=now --all && git gc --prune=now --aggressive
, но не знаю, как удалить этот PR в удаленном репозитории.
У меня возникла эта проблема, когда я очищал историю репозитория с помощью BFG, как обсуждалось здесь. Мое нажатие локальных изменений на удаленное было отклонено из-за отклоненных ссылок (как показано ниже, а здесь связанное обсуждение этой темы)
(base) ****@*****:~/*****/abcde.git$ git push --force
Username for *****************:
Password for *****************:
Counting objects: 17811, done.
Delta compression using up to 24 threads.
Compressing objects: 100% (10604/10604), done.
Writing objects: 100% (17811/17811), 367.27 MiB | 2.16 MiB/s, done.
Total 17811 (delta 6545), reused 17811 (delta 6545)
remote: Resolving deltas: 100% (6545/6545), done.
remote: You are attempting to update refs that are reserved for Bitbucket's pull request functionality. Bitbucket manages these refs automatically, and they may not be updated by users.
remote: Rejected refs:
remote: refs/pull-requests/2/from
remote: refs/pull-requests/2/merge
remote: refs/pull-requests/5/from
remote: refs/pull-requests/5/merge
remote:
Обновления:
Наконец, я обошел проблему конфликта ссылок, создав новый пустой удаленный репозиторий и поместив туда свое локальное зеркало git.
cd ~/<repo_directory/repo_name>
git remote set-url origin <bitbucket_URL>
git push --mirror