개발관련/Git

푸시 된 후 git에서 커밋을 스쿼시하는 방법

Rateye 2021. 11. 26. 10:32
728x90
반응형
질문 : 푸시 된 후 git에서 커밋을 스쿼시하는 방법은 무엇입니까?

이것은 여러 커밋을 스쿼시하는 것에 대한 좋은 설명을 제공합니다.

http://git-scm.com/book/en/Git-Branching-Rebasing

그러나 이미 푸시 된 커밋에는 작동하지 않습니다. 내 로컬 및 원격 저장소 모두에서 가장 최근의 커밋을 어떻게 스쿼시합니까?

git rebase -i origin/master~4 master 를 수행하고 첫 번째 것을 pick 으로 유지하고 나머지 세 개를 squash 로 설정 한 다음 종료합니다 (emacs의 cx cc를 통해).

$ git rebase -i origin/master~4 master
# Not currently on any branch.
nothing to commit (working directory clean)

Could not apply 2f40e2c... Revert "issue 4427: bpf device permission change option added"
$ git rebase -i origin/master~4 master
Interactive rebase already started

여기서 2f40은 pick 커밋입니다. 이제 4 개의 커밋 중 어느 것도 git log 나타나지 않습니다. 커밋 메시지를 입력 할 수 있도록 편집기가 다시 시작될 것으로 예상했습니다. 내가 도대체 뭘 잘못하고있는 겁니까?

답변

스쿼시 로컬 커밋

git rebase -i origin/master~4 master

그런 다음

git push origin +master

git push 문서에서 :

--force 는 푸시되는 모든 참조에 push.defaultmatching remote.*.push 구성된 여러 푸시 대상과 함께 사용하면 현재 분기가 아닌 다른 참조 (로컬 참조 포함)를 덮어 쓸 수 있습니다. 원격 대응 자 뒤에 엄격하게). 하나의 브랜치에만 강제로 푸시하려면 + 를 사용하여 푸시합니다 (예 : git push origin +master master 브랜치로 강제로 푸시).

출처 : https://stackoverflow.com/questions/5667884/how-to-squash-commits-in-git-after-they-have-been-pushed
728x90
반응형