차단된 푸시 해결하기
차단된 푸시를 해결하려면 표시되는 모든 커밋에서 비밀 정보를 제거해야 합니다.
- 비밀 정보가 최신 커밋에 의해 도입된 경우 분기의 최신 커밋에 의해 도입된 비밀 제거를 참조하세요.
- 이전 커밋에 비밀 정보가 표시되는 경우 분기의 이전 커밋에서 도입한 비밀 정보 제거를 참조하세요.
분기의 최신 커밋에서 도입한 비밀 제거
- 코드에서 비밀을 제거합니다.
- 변경 사항을 커밋하려면
git commit --amend --all을 실행합니다. 이렇게 하면 새 커밋을 생성하는 대신 해당 비밀 정보를 처음 도입했던 원래 커밋이 업데이트 됩니다. -
`git push`를 사용하여 변경 사항을 푸시합니다.
분기의 이전 커밋이 도입한 비밀 정보 제거
-
분기 푸시를 시도할 때 표시된 오류 메시지를 잘 살펴보면 비밀 정보를 포함한 모든 커밋을 목록으로 열거합니다.
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 add .`를 사용하여 스테이징 영역에 변경 내용을 추가합니다.참고 항목
전체 명령은
git add .입니다. *add와.사이에는 공백이 있습니다.- 공백 뒤에 마침표는 명령에 포함됩니다.
-
`git commit --amend`을 이용해 변경 사항을 커밋합니다. -
`git rebase --continue`를 실행하여 다시 지정을 완료합니다. -
`git push`를 사용하여 변경 사항을 푸시합니다.
푸시 보호 우회하기
참고 항목
블록을 바이패스하는 옵션이 표시되지 않으면 커밋에서 비밀을 제거하거나 차단된 비밀을 푸시하기 위해 "권한 무시" 요청을 제출해야 합니다. 바이패스 권한 요청을 참조하세요.
-
푸시가 차단되었을 때 푸시를 수행한 사용자와 동일한 사용자로 GitHub에서 반환된 URL을 방문합니다. 다른 사용자가 이 URL을 방문하려고 하면
404오류가 발생합니다. -
비밀을 푸시할 수 있어야 하는 이유를 가장 잘 설명하는 옵션을 선택합니다.
- 비밀이 테스트에만 사용되고 위협이 되지 않는 경우 테스트에 사용됨을 클릭합니다.
- 검색된 문자열이 비밀이 아니면 가양성임을 클릭합니다.
- 비밀이 진짜이지만 나중에 수정하려는 경우 나중에 수정을 클릭합니다.
-
**이 비밀을 푸시하도록 허용**을 클릭합니다. -
3시간 이내에 명령줄에서 푸시를 다시 시도합니다. 3시간 이내에 푸시하지 않은 경우 이 프로세스를 반복해야 합니다.
우회 권한 요청
-
푸시가 차단되었을 때 푸시를 수행한 사용자와 동일한 사용자로 GitHub에서 반환된 URL을 방문합니다. 다른 사용자가 이 URL을 방문하려고 하면
404오류가 발생합니다. -
"또는 권한 무시 요청"에 설명을 추가합니다. 예를 들어 비밀이 돌려주는 것이 안전하다고 생각하는 이유를 설명하거나 차단을 무시하기 위한 요청의 컨텍스트를 제공할 수 있습니다.
-
요청 제출을 클릭합니다.
-
메일 알림 요청에 대한 응답을 확인하세요. 요청이 검토되고 나면 결정 내용을 알리는 이메일을 받게 됩니다.
- 요청이 승인되면 비밀을 포함하는 커밋(또는 커밋)을 리포지토리에 푸시할 수 있으며 동일한 비밀을 포함하는 이후 커밋도 푸시할 수 있습니다.
- 요청이 거부된 경우 다시 푸시하기 전에 모든 커밋에서 비밀을 제거해야 합니다. 차단된 비밀 정보를 삭제하는 방법에 대한 자세한 내용은 차단된 푸시 해결을 참조하세요.
추가 읽기
-
[AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) -
[AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-rest-api)