2011-02-08 8 views
39

나는 힘이 새 단다. 새로운 지사에서 개발하는 동안, 나는 계속해서 내 응용 프로그램의 다양한 개발 상태를 저지르고있었습니다. 이제 검토를 위해 체크인해야하지만 모든 사항이 다른 커밋 (다른 주석과 ID)으로 들어가는 것을 원하지는 않았습니다.힘내 커밋 커밋

처음으로 모든 변경 사항을 푸시 할 수 있습니까?

+3

Stack Overflow에서 특정 기술 관련 질문이므로 더 많은 독자를 확보 할 수 있습니다. –

+0

감사합니다 @ Alex Feinman :) – DiogoNeves

+0

[두 가지 커밋을 하나로 병합하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/2563632/how-can-i-merge-two-commits-into-one) – givanse

답변

49
git rebase -i HEAD~5 

마지막으로 5 개의 커밋 중 하나를 하나로 결합하도록 대화 형으로 선택할 수 있습니다. 내 머리 위로 떨어져 그것을 방치

pick xxxx commit1 
pick xxxx commit2 
pick xxxx commit3 
pick xxxx commit4 
pick xxxx commit5 

이 두 커밋 결과

pick xxxx commit1 
squash xxxx commit2 
squash xxxx commit3 
squash xxxx commit4 
pick xxxx commit5 

로 변경할이 같은 뭔가 편집기를 엽니 다 결합했다 첫 번째는 1 범 - 4, 그리고 남은 5 (가장 최신 버전)을 맡기십시오.

+4

커밋은 가장 오래된 것으로 먼저 나열됩니다. –

+0

@jleedev +1 당신 말이 맞아요. – stijn

+0

고마워요! :) 나는 처음에 커밋을하기 전에 실제로 커밋을 다시 시작한 다음 모든 변경 사항을 함께 완전히 커밋했지만 솔루션에 만족하지 않았습니다. 이 하나 주셔서 감사합니다 :) – DiogoNeves

5

"마이크로 커밋"을 유지하는 것이 좋습니다. 기능 이전의 커밋에서 현재 HEAD까지 diff를 수행하여 검토를 위해 보낼 수있는 전체 diff를 볼 수 있습니다.

+0

더 많은 시나리오 특정 문제; 대개는 리베이스 (rebase)하고 커밋을보다 논리적으로 만들고 "웁스 (oops)"를 없애기를 원할 것입니다. 패치를 보내기 전에 커밋합니다. – alternative

+1

그건 사실이지만, 리뷰의 목적을 위해 개발의 전체 주/월을 단일 커밋으로 스쿼시하는 것을 좋아하지 않습니다. 나는'--amend' 자신의 무거운 사용자입니다. –

+0

당신은 아마 양쪽 다 맞을 것입니다. 제 경우에는 다른 사람들이 검토 할 수 있도록 보내고 거기에 '백업'커밋이별로 의미가 없습니다 :) Thanks – DiogoNeves