Git에서 이미 푸시된 스쿼시 커밋
이 문서에서는 이미 원격 저장소에 푸시한 커밋을 스쿼시하는 프로세스에 대해 설명합니다. 저장소의 혼란을 줄이기 위해 커밋을 하나로 스쿼시합니다.
커밋을 스쿼시하기 위해 대화형 모드에서 git rebase
를 실행합니다.
Git에서 이미 푸시된 스쿼시 커밋
더 쉬운 컨텍스트를 위해 변경 사항을 푸시한 후 몇 개의 커밋을 하나로 스쿼시해야 하는 시나리오를 시뮬레이션합니다.
먼저 현재 변경 사항을 원격 저장소에 푸시합니다.
$ git push origin Dev2.1
이 명령은 모든 변경 사항을 원격 브랜치 Dev2.1
에 푸시합니다.
5번째 커밋까지 git rebase
명령을 실행할 수 있습니다.
$ git rebase -i HEAD~5
출력:
커밋을 스쿼시하기 위해 커밋 시작 부분에서 pick
을 squash
로 바꾸고 리베이스를 완료합니다.
git log
명령을 실행하여 커밋 기록을 볼 수 있습니다.
푸시를 시도하면 아래와 같이 오류가 발생합니다.
오류는 자명합니다. 우리는 그것에 대해 많이 생각하지 않을 것입니다.
--force
플래그가 아니라 아래와 같이 푸시를 강제해야 합니다.
$ git push origin +Dev2.1
출력:
GitHub의 원격 저장소를 간단히 살펴보겠습니다.
refspec
앞에 +
를 사용하여 Dev2.1
브랜치로 강제 푸시합니다.
결론적으로 이미 원격으로 푸시한 커밋을 스쿼시한 후에는 일반적인 git push
가 소용이 없습니다.
Git이 푸시하기 전에 당겨야 하는 성가신 루프에 갇히게 될 것입니다. git push origin
명령에서 분기 앞에 +
를 추가하면 문제가 해결됩니다.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn