2014-07-22 4 views
1

내 repo에는 커밋 수가 많고 마지막 5 가지 커밋까지 모든 것을 스쿼시하고 싶습니다. 결국에는 repo에 스쿼시가 커밋 된 다음 커밋됩니다. 가장 최근의 저의 5 가지 커밋입니다.5 커밋까지 커밋 내역을 축하하는 방법

하기 전에 :

10 
9 
8 
7 
6 
5 
4 
3 
2 
1 

후 : 내가 자식을 시도

10 
9 
8 
7 
6 
squash commit 

끝과 숙청 부분의 시작 부분에 --soft 다시,하지만 난 내 마지막을 유지하는 방법을 잘 모르겠어요 5 개의 커밋은 5 개 전의 부분을 스쿼시 할 때 사라집니다.

+1

을이 아마 좋은 생각이 아니다, 그것은 * 모든 커밋 해시를 변경하므로 *을 포함하여, 범 으스러지지 않는 것들. 저장소에서 작업하는 유일한 사람이 아니라면 쉽게 문제를 해결할 수 있습니다. 실제로 커밋을 스쿼시하고 싶습니까, 아니면 그냥 내역을 잘라내시겠습니까? – Chris

+0

옙, 나는 지금 유일한 사람입니다 – mango

+0

전에 이런 질문을 보았습니다. 이것은 복제본입니다. 다른 하나를 찾아 보자 ... –

답변

1

git rebase -i --root을 사용하십시오. (만약 당신의 자식이 대화 형 rebase에 --root을 가질만큼 충분히 새롭지 않다면, "고아"브랜치를 먼저 만들어야하기 때문에 조금 더 고통 스럽습니다.) 다음과 같은 파일에 편집기 세션이 나타납니다 :

pick b9491ea commit-10 
pick d1574b8 commit-9 
... 
pick ab31c0f commit-1 

# Rebase ... 
# [commentary with instructions] 

변경, 저장 편집기를 종료하고, # 1 커밋의 사본에 2 ~ 5 저지른 뜻 호박을 리베이스, 다음 (10)를 통해 결과를 커밋 (6)의 사본을 추가, "스쿼시"에 2 ~ 5 커밋 repo에는 최종 커밋의 사본이 있습니다 (원래 커밋의 사본이 없습니다. 아직 커밋되지 않았지만 현재는 보이지 않으며 결국 가비지 수집됩니다).

이 (당신은 너무,의 텍스트를 커밋 숙청 커밋 고칠 수있는 기회를 갖게 될 것입니다.)