Сведения о защите push-уведомлений
Защита от push-уведомлений помогает предотвратить утечку безопасности путем сканирования секретов перед отправкой изменений в репозиторий.
При попытке отправить секрет в репозиторий, защищенный защитой push-уведомлений, GitHub блокирует отправку. Перед повторной отправкой необходимо удалить секрет из ветви. Дополнительные сведения о том, как устранить заблокированную отправку, см. в разделе "Разрешение заблокированной отправки в командной строке" и "Разрешение заблокированной фиксации в веб-интерфейсе" в этой статье.
Если вы считаете, что это безопасно, чтобы разрешить секрет, вы иметь возможность обойти защиту. Дополнительные сведения см. в разделе Работа с защитой push-уведомлений.
Сведения о секретах и поставщиках услуг, поддерживаемых для защиты push-уведомлений, см. в разделе "Шаблоны сканирования секретов".
Как разрешить заблокированную отправку в командной строке
При попытке отправить поддерживаемый секрет в репозиторий, защищенный защитой push-уведомлений, GitHub блокирует отправку. Вы можете удалить секрет из ветви или следовать предоставленному URL-адресу для разрешения отправки.
Примечания:
- Если конфигурация Git поддерживает отправку в несколько ветвей, а не только в текущую ветвь, отправка может быть заблокирована из-за дополнительных и непреднамеренных ссылок. Дополнительные сведения см. в разделе Параметры 
push.defaultв документации Git. - Если истечет время ожидания secret scanning при отправке, GitHub все равно выполнит проверку фиксаций на наличие секретов после отправки.
 
Удаление секрета, введенного последней фиксацией в ветви
Если заблокированный секрет был внесен последней фиксацией в вашей ветви, следуйте приведенным ниже инструкциям.
- Удалите секрет из кода.
 - Чтобы зафиксировать изменения, выполните команду 
git commit --amend. Это обновляет исходную фиксацию, которая представила секрет вместо создания новой фиксации. - Отправьте изменения с помощью команды 
git push. 
Удаление секрета, введенного более ранней фиксацией в ветви
Вы также можете удалить секрет, если он отображается в более ранней фиксации в журнале Git. Для этого необходимо определить, какая фиксация впервые представила секрет и изменить журнал фиксации с помощью интерактивной повторной базы.
- 
Проверьте сообщение об ошибке, отображаемое при попытке отправить ветвь, в которой перечислены все фиксации, содержащие секрет.
remote: —— GitHub Personal Access Token —————————————————————— remote: locations: remote: - commit: 8728dbe67 remote: path: README.md:4 remote: - commit: 03d69e5d3 remote: path: README.md:4 remote: - commit: 8053f7b27 remote: path: README.md:4 - 
Затем выполните команду
git log, чтобы просмотреть полную историю всех фиксаций в ветви, а также соответствующие метки времени.test-repo (test-branch)]$ git log commit 8053f7b27 (HEAD -> main) Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 13:03:37 2024 +0100 my fourth commit message commit 03d69e5d3 Author: Octocat <1000+octocat@users.noreply.github.com> Date: Tue Jan 30 13:02:59 2024 +0100 my third commit message commit 8728dbe67 Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 13:01:36 2024 +0100 my second commit message commit 6057cbe51 Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 12:58:24 2024 +0100 my first commit message - 
Focusing only on the commits that contain the secret, use the output of
git logto identify which commit comes earliest in your Git history.- In the example, commit 
8728dbe67was the first commit to contain the secret. 
 - In the example, commit 
 - 
Start an interactive rebase with
git rebase -i <COMMIT-ID>~1.- For 
<COMMIT-ID>, use the commit identified in step 3. For example,git rebase -i 8728dbe67~1. 
 - For 
 - 
In the editor, choose to edit the commit identified in step 3 by changing
picktoediton the first line of the text.edit 8728dbe67 my second commit message pick 03d69e5d3 my third commit message pick 8053f7b27 my fourth commit message - 
Сохраните и закройте редактор, чтобы запустить интерактивную перебазу.
 - 
Удалите секрет из кода.
 - 
Зафиксируйте изменения с помощью
git commit --amend. - 
Выполните команду
git rebase --continue, чтобы завершить перемещение изменений из одной ветви в другую. - 
Отправьте изменения с помощью команды
git push. 
Как разрешить заблокированную фиксацию в пользовательском веб-интерфейсе
При использовании веб-интерфейса для фиксации поддерживаемого секрета в репозитории, защищенном защитой push-уведомлений, GitHub блокирует фиксацию.
Откроется диалоговое окно с информацией о расположении секрета, а также параметры, позволяющие отправить секрет. Секрет также будет подчеркнут в файле, чтобы его можно было легко найти.
Чтобы устранить заблокированную фиксацию в веб-интерфейсе, необходимо удалить секрет из файла. После удаления секрета вы сможете зафиксировать изменения.
Кроме того, если определить, что секрет безопасно разрешить, используйте параметры, отображаемые в диалоговом окне, для обхода защиты от отправки. Дополнительные сведения об обходе защиты push-уведомлений из веб-интерфейса см. в разделе "Работа с защитой push-уведомлений".