IT이야기

GitHub 풀 요청을 위해 모든 커밋을 하나로 스쿼시

cyworld 2021. 4. 2. 21:15
반응형

GitHub 풀 요청을 위해 모든 커밋을 하나로 스쿼시


이 질문에 이미 답변이 있습니다.

GitHub에서 pull 요청을했습니다. 이제 저장소 소유자는 모든 커밋을 하나로 스쿼시하라고 말합니다.

입력하면 git rebase -i메모장이 다음 내용으로 열립니다.

noop

# Rebase 0b13622..0b13622 onto 0b13622
#
# 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
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

Google에서 검색했지만 방법을 이해하지 못합니다.


다른 사람이이 솔루션을 찾는 데 도움이되는 간단한 추가 기능입니다. 스쿼시하려는 이전 커밋 수를 전달할 수 있습니다. 예를 들면

git rebase -i HEAD~3 

그러면 에디터에 마지막 3 개의 커밋이 나타납니다.


좋아, 알아 냈어 ... 먼저 git rebase -i xxxxxxxxxxxxxxxxxxxxxxxxxx가 내가 스쿼시해야 할 커밋의 SHA 인 곳 을 작성해야했습니다 . 그런 다음 메모장에서 첫 번째는 선택으로 편집하고 나머지는 스쿼시로 편집했습니다. 그런 다음 새 메모장 창이 나타나고 첫 번째 줄에 새 커밋의 이름을 입력했습니다. 그리고 나서 강제 푸시를해야했습니다.

git push --force origin master

2016 년 4 월 1 일부터 저장소 관리자는 pull 요청에서 "Squash and merge"를 선택하여 pull 요청의 모든 커밋을 단일 커밋으로 스쿼시 할 수 있습니다.

스쿼시 및 병합 옵션

pull 요청에서 커밋을 수동으로 스쿼시하려면 fontno의 답변을 참조하십시오 .


을 시도 git rebase -i하고 스쿼시하려는 모든 커밋에 'squash'를 사용 하십시오 .

편집하다:

git rebase -i리베이스하는 커밋 목록이있는 대화 형 편집기가 표시됩니다. 각 커밋 이전의 기본 명령은 "pick"이므로 스쿼시하려는 모든 커밋에 대해 s / pick / squash / 만하면됩니다. 그러면 모든 커밋이 마지막 이전 커밋으로 스쿼시됩니다.

올바른 분기에서 리베이스하고 있는지 확인하십시오.

참조 URL : https://stackoverflow.com/questions/14534397/squash-all-my-commits-into-one-for-github-pull-request

반응형