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.default
를 matching
remote.*.push
구성된 여러 푸시 대상과 함께 사용하면 현재 분기가 아닌 다른 참조 (로컬 참조 포함)를 덮어 쓸 수 있습니다. 원격 대응 자 뒤에 엄격하게). 하나의 브랜치에만 강제로 푸시하려면 +
를 사용하여 푸시합니다 (예 : git push origin +master
master
브랜치로 강제로 푸시).
출처 : https://stackoverflow.com/questions/5667884/how-to-squash-commits-in-git-after-they-have-been-pushed
728x90
반응형
'개발관련 > Git' 카테고리의 다른 글
추적을 중지하고 Git에서 파일 변경 사항을 무시하는 방법 (0) | 2021.11.27 |
---|---|
한 Git 브랜치에서 다른 Git 브랜치로 단일 파일 버전을 복사하는 방법 (0) | 2021.11.26 |
git 스테이징 영역에서 파일을 제거하는 방법 (0) | 2021.11.26 |
병합 된 모든 Git 브랜치를 삭제하는 방법 (0) | 2021.11.26 |
.gitignore에서 무시되는 특정 파일을 표시하는 Git 명령 (0) | 2021.11.26 |