2009-10-06 7 views
5

단지 100 개의 커밋/로그 메시지가 거의없는 개발 브랜치가 있다고 가정 해 보겠습니다. dev 브랜치를 마스터/헤드에 병합 할 수 있습니까? 마스터 브랜치에 하나의 로그 메시지 만 있습니까? 즉, 헤드/마스터 브랜치에 하나의 로그 메시지가 "기능 XYZ 추가"라고 말할 수 있습니다.하나의 로그 메시지만으로 dev 브랜치를 병합하기

두 가지 정답이있는 것 같습니다. 스쿼시를 사용하면 마스터 브랜치에서 모든 커밋을 숨길 수 있으며 대화 형 리베이스를 사용하면 마스터 브랜치에서 히스토리의 선택된 부분을 숨길 수 있습니다.

+2

이 작업이 가능할 수도 있지만 실제로 모든 기록을 잃고 싶은지 고려해보십시오. 히스토리는 나중에 버그 도입을 추적하려고 할 때 유용 할 수 있습니다. –

+0

Doh! 그래서 나는 그것을 이해하는 두 가지 대답은 기술적으로 정확합니다. 스쿼시를 사용하면 기본적으로 모든 기록을 숨길 수 있으며 rebase를 사용하면 기록을 간단히 변경할 수 있습니다. – corydoras

답변

9

git-merge --squash 다음에 git commit을 입력해야합니다. git rebase --interactive는 당신이 필요로하는 무엇처럼

(More documentation on git-merge)

+0

나는 리베이스 옵션을 사용하는 것이 아마 더 좋은 방법 일지라도 이것이 내 질문에 대한 대답이라고 생각한다. – corydoras

+0

나는 그 후에'git commit'을해야한다고 생각합니까? –

+0

고마워, 그건 옳은 말이야. – Phil

7

소리가 난다. Git Book의 This section에 대한 설명 :

대화 형으로 리베이스 할 수도 있습니다. 어딘가에 넣기 전에 자신의 커밋 개체를 다시 쓰는 데 자주 사용됩니다. 을 다른 사람과 공유하기 전에 커밋을 병합하거나 순서를 바꾸는 것이 쉬운 방법입니다. 또한 을 로컬에서 적용 할 때 을 다른 사람으로부터 빼낸 커밋을 정리하기 위해 을 사용하면됩니다.

+3

'git rebase -i'는 제가 배운 가장 훌륭한 것들 중 하나입니다. –

+1

고마워! 나는이 점을 배울 점을 만들 것이다 – corydoras

+1

동의 함. 역사를 다시 써서 간단하고 간결하게 만들 수 있다면 스쿼시 (역사 삭제)를 원하지 않습니다. 또한 대화식 리베이스를 사용하면 매우 강력합니다. – Cascabel

관련 문제