2013-05-24 4 views
2

내 토픽 브랜치는 제가 분기 한 곳보다 약 20 커밋입니다.자동으로 스쿼시 20 개 커밋을하고자합니다

분기 후 첫 번째 커밋 에이 모든 커밋을 자동으로 스쿼시하고자합니다.

내가 rebase와 대화 형으로이 작업을 수행 할 수 있음을 알고 있지만 상호 작용하고 싶지 않습니다. 단지 명령을 실행하십시오.

+0

[가능한 첫 번째 커밋을 어떻게 찾을 수 있습니까?] (http://stackoverflow.com/questions/15948202/how-can-i-find-the-first-commit-of-a- branch) – Chronial

+0

@Chronial : 어쩌면 당신이 언급 한 질문의 제목이 오도 된 것입니다 ... – krlmlr

답변

4

당신은 이런 식으로 할 수있는 :

git reset --soft HEAD~20 
git commit -m "massive commit" 
  • 첫 번째 명령은 토픽 브랜치 (20)가 다시 커밋으로 이동하지만, 그런 다음 당신을 인덱스의 변화 (와 작업 트리)
  • 을 유지 변경 내용이 모두 인 단일 커밋을 만듭니다.

(가) 정확한 당신이 재설정하려는 커밋 찾을 수있는 빠른 방법은 다음

git reset --soft <commit-ish> 
0

왜 작업을 수행 할 수 있습니다, 그 출력이 <commit-ish> 경우

git merge-base <topicbranch> <otherbranch> 

을하는 것입니다 원래 지점을 확인하고 git merge --squash <other branch>?

그러면 git commit은 결합 된 커밋 메시지를 편집 할 수있는 기회를 제공합니다.

+0

꽤 좋은 대안이지만, 다른 상태로 가지를 남기지 않습니다. 은 병합 완료 시점에 있고 은 있던 위치에 남아 있습니다. 'git reset's로 수정하지 않는다면. 당연하지. –

+0

나는 실제로 질문을 잘못 읽었다 고 생각합니다. 나는 그가 가지가 창조 된 후에 원래 가지에 대한 첫 번째 커밋을 의미한다고 생각했다; 내 생각에 그는 병합하지 않고 자신의 지점을 하나의 커밋으로 스쿼시하려고합니다. – meagar

+0

아, 네 말이 맞아. 나는 그것을 반영하기 위해 나의 대답을 바꿀 것이다. –

관련 문제