2015-01-29 2 views
2

나는 하나의 커밋으로 스쿼시하려고하는 많은 커밋을 가지고있다. 물론 모든 커밋에 대해 picksquash으로 바꿀 수는 있지만 수백 커밋이 있습니다. 자동으로이 작업을 수행 할 수있는 방법이 있습니까?많은 커밋을 자동으로 스쿼시하는 방법은 무엇입니까?

+2

이 편집기 목록을 편집하는 데 사용중인 편집기는 무엇입니까? 아마도 전 세계 검색 및 대체 명령을 사용할 수 있습니다. 예를 들어 vim에서는': % s/pick/squash/g'을 사용할 수 있습니다. – Jonah

+0

'GIT_SEQUENCE_EDITOR' 변수를 사용하면됩니다. http://stackoverflow.com/a/27697274/974186 –

+0

커밋 메시지를 모두 보관 하시겠습니까? 새로운 커밋 메시지를 입력하는 데 신경 쓰지 않는다면 쉬운 방법이 있습니다. –

답변

4

당신이

커밋
... - C1 - C2 - C3 - C4 - C5 <- HEAD 

의 순서가 있고 작업 디렉토리의 상태를 유지하고 영역을 준비하는 동안 C1에 지점을 재설정 할 수 있습니다, 하나의 커밋으로 C5C2 스쿼시하려면, 그러면 다시 커밋합니다.

git reset --soft C1 
git commit 

이렇게하면 커밋 메시지를 다시 입력해야합니다. 물론 재설정하기 전에 git log을 사용하고 유지하려는 커밋 메시지의 부분을 복사 할 수 있습니다.

master 브랜치의 단일 커밋 ontop으로 기능 브랜치를 채우려면 또 다른 옵션은 git merge--squash 옵션을 사용하는 것입니다.