Это моя защищенная (основная) конфигурация ветки:
И вот что я пробовал:
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 306 bytes | 306.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
remote: error: GH006: Protected branch update failed for refs/heads/master.
remote: error: Required status check "build-pipeline" is expected.
To github.com:AdityaGovardhan/my-repo.git
! [remote rejected] master -> master (protected branch hook declined)
error: failed to push some refs to 'git@github.com:AdityaGovardhan/my-repo.git'
Итак, у меня есть репозиторий github my-repo
. У меня есть действие build-pipeline
GitHub, которое я сохранил по мере необходимости для добавления фиксации в мастер. Вот что говорит требуемый оператор проверок:
Выберите, какие проверки статуса должны пройти, прежде чем ветви можно будет объединить в ветвь, соответствующую этому правилу. Если этот параметр включен, коммиты должны сначала быть отправлены в другую ветку, а затем объединены или отправлены непосредственно в ветвь, которая соответствует этому правилу, после прохождения проверки статуса.
Итак, вот что я ожидал, это произойдет. Я могу передать sh с моего локального мастера на удаленный мастер (который защищен) напрямую из-за последнего оператора ^ , но фиксация будет в промежуточном состоянии на удаленном компьютере, потому что build-pipeline
проверка статуса еще не прошла. Я знаю, что git работает не так. Но тогда в чем смысл этого последнего оператора ^ , когда он вынуждает меня создать незащищенную ветку и поднять запрос на вытягивание для выполнения проверки состояния build-pipeline
, а затем слиться с мастер.