특정 git 커밋 제거하기

1958 단어 rebasegitcommit
커밋이나 특정 커밋을 되돌리고 싶은 두 가지 이유가 있습니다.

시나리오 A: 기능 분기에서 작업하고 나중에 특정 변경이 더 이상 관련이 없다는 것을 깨닫고 그러한 커밋/변경을 제거하려고 할 때.

시나리오 B: 작업 브랜치를 원격으로 푸시할 때 풀 요청을 생성하려고 할 때 브랜치를 비교하고 작업과 관련이 없는 커밋이 있다는 것을 깨달았습니다. 아마도 로컬 저장소가 동기화되지 않았기 때문일 수 있습니다.

어떻게 고치는 지 ?

시나리오 A의 경우 다음을 실행할 수 있습니다.

git revert <commit-hash>

여기서 <commit-hash> 대상 커밋 해시가 완료되었습니다.

힌트, 다음을 실행하여 모든 커밋을 해시와 함께 나열할 수 있습니다.

git log --oneline

시나리오 B: 분기에서 여러 커밋/변경 사항을 제거해야 하는 경우 다음을 실행하여 대상 기본 분기와 대화식으로 리베이스할 수 있습니다.

git rebase -i <target-branch>

그러면 현재 작업 분기의 모든 커밋을 나열하는 열린 편집기가 생성됩니다.

힌트, rebase는 현재 변경 사항을 가져와 다른 분기 위에 쌓는 것을 수반하므로 원하는 커밋을 선택적으로 선택하고 다른 커밋을 거부할 수 있습니다.

편집기가 열리면 열린 편집기에서 단순히 레코드를 삭제하여 원하는 대로 특정 커밋을 제거할 수 있습니다. 편집기에 적용 가능한 명령에 대한 지침이 있습니다.

명령이 있는 열린 편집기는 다음과 같아야 합니다.

# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit

연습을 완료하고 편집기를 닫으면 리베이스가 자동으로 작동합니다.

그게 다야 재미있는 코딩!

좋은 웹페이지 즐겨찾기