실수로 푸시 된 커밋 : git 커밋 메시지 변경
내 로컬 저장소에 잘못된 커밋 메시지가있는 커밋이 하나 있습니다.
이미 잘못된 커밋 메시지를 git push
.
이제 원격 저장소 (GitHub 호스팅)에도 잘못된 커밋 메시지가 있습니다.
나는 이미 시도 git commit --amend
했지만 잘못된 커밋 이후 추가 커밋을했기 때문에이 상황에서 작동하지 않는다는 것을 알았습니다.
이 상황을 어떻게 해결 하시겠습니까?
가장 쉬운 해결책 ( 그러나이 작업을 수행하기 전에이 전체 답변을 읽으십시오 ) :
git rebase -i <hash-of-commit-preceding-the-incorrect-one>
- 열리는 편집기 에서 잘못된 커밋 라인 에서로 변경
pick
합니다reword
. - 파일을 저장하고 편집기를 닫습니다.
- 잘못된 커밋 메시지와 함께 편집기가 다시 열립니다. 그것을 고쳐라.
- 파일을 저장하고 편집기를 닫습니다.
git push --force
GitHub를 업데이트합니다.
이는 이전에 게시 된 저장소의 수정 된 버전을 게시하게됨을 의미합니다. 잘못된 커밋 메시지로 실수 한 시점과 수정 한 시점 사이에 누군가가 리포지토리에서 가져 오거나 가져 오면 나중에 약간의 어려움을 겪을 것입니다. 따라서 이것을 시도하기 전에이 결과를 받아 들일 수 있는지 확인하십시오.
하나의 커밋에 대해 전체 리베이스 경로를 사용하는 대신 :
git reset --soft head~
git commit -m "The message you wanted to use"
git push -f
git-reset 맨 페이지 에서 옵션을 볼 수 있습니다 .
자신 만 작업하는 프로젝트의 경우 변경된 기록이 문제가되지 않아야합니다.
여러 브랜치에 걸쳐 이전 커밋 메시지를 변경해야하는 경우 (즉, 오류 메시지가있는 커밋이 여러 브랜치에 있음) 사용하는 것이 좋습니다.
git filter-branch -f --msg-filter 'sed "s/<old message>/<new message>/g"' -- --all
커밋 메시지를 대체합니다.
Git은 재 작성을위한 임시 디렉토리를 만들고 refs / original /에서 이전 참조를 추가로 백업합니다.
-f
작업 실행을 강제합니다. 임시 디렉토리가 이미 존재하거나 refs / original 아래에 이미 참조가 저장된 경우 필요합니다 . 그렇지 않은 경우이 플래그를 삭제할 수 있습니다.
--
필터 분기 옵션과 개정 옵션을 구분합니다.
--all
모든 분기 와 태그 가 다시 작성 되었는지 확인 합니다.
이전 참조의 백업으로 인해 명령을 실행하기 전 상태로 쉽게 돌아갈 수 있습니다.
마스터를 복구하고 old_master 브랜치에서 액세스하려고합니다.
git checkout -b old_master refs/original/refs/heads/master
변경 사항에 만족하면 git push -f를 사용하여 변경 사항을 공용 저장소에 푸시하십시오.
첫 번째 수정 된 커밋으로 시작하는 커밋의 모든 해시가 변경되었으므로 공동 작업자에게 이에 대해 알려야합니다.
원격 브랜치 (Github / Bitbucket)에 코드를 푸시하지 않은 경우 명령 줄에서 커밋 메시지를 아래와 같이 변경할 수 있습니다.
git commit --amend -m "Your new message"
특정 지점에서 작업하는 경우이 작업을 수행하십시오.
git commit --amend -m "BRANCH-NAME: new message"
이미 잘못된 메시지로 코드를 푸시했다면 메시지를 변경할 때주의해야합니다. 즉, 커밋 메시지를 변경하고 다시 푸시하면 문제가 발생합니다. 부드럽게 만들려면 다음 단계를 따르십시오. 그것을하기 전에 전체 답변을 읽으십시오
git commit --amend -m "BRANCH-NAME : your new message"
git push -f origin BRANCH-NAME # Not a best practice. Read below why?
Important note: When you use the force push directly you might end up with code issues that other developers are working on the same branch. So to avoid that conflicts you need to pull the code from your branch before making the force push
git commit --amend -m "BRANCH-NAME : your new message"
git pull origin BRANCH-NAME
git push -f origin BRANCH-NAME
This is the best practice when changing the commit message, if it was already pushed.
참고URL : https://stackoverflow.com/questions/5032374/accidentally-pushed-commit-change-git-commit-message
'code' 카테고리의 다른 글
메서드가 'void'를 반환하는지 반영하여 확인하는 방법 (0) | 2020.11.14 |
---|---|
달력에 대한 날짜 개체 [자바] (0) | 2020.11.14 |
고품질의 간단한 임의 암호 생성기 (0) | 2020.11.14 |
matplotlib에서 빈 서브 플롯을 어떻게 만들 수 있습니까? (0) | 2020.11.14 |
명령 줄에서 PHP 스크립트 실행 (0) | 2020.11.14 |