2013-03-31 1 views
19

현재 분기에서 마스터로 모든 커밋을 리베이스하고 스쿼시하려고합니다. 그 후 나는 노력했다,힘내 : 지점에서 마스터로 커밋을 rebase 및 squash하는 방법은 무엇입니까?

git checkout -b new-feature 

커밋 몇합니다 : 여기에 내가 할 노력하고있어이 경우에

git rebase -i master 

new-feature 지점에 남아 커밋

git checkout master 
git rebase -i new-feature 

나를 알려주고 noop 메시지로 창을 편집합니다.

나는 명령에 대해 알고 :

git merge --squash new-feature 

하지만 현재 rebase 명령의 학습에 일하고 있어요.

답변

4

rebase 할 때 Git은 커밋을 다른 분기로 옮기지 않습니다. 모든 커밋을 포함하여 지점을 이동할 것입니다. 리베이스 (rebase)를 한 후에 커밋을 마스터로 가져 오려면 git merge <branch tip or commit of branch>을 사용하여 마스터 브랜치를 해당 커밋으로 빨리 감기하십시오.

45

단계를 진행합니다.

1 - 우리는

git checkout -b new-feature 

이 새로운 기능 분기를 생성 - 이제 추가/

git add <new-file> 
git commit -am "Added new file" 
git rm <file-name> 
git commit -am "Removed a file" 
cat "add more stuff to file" >> <new-file> 
git commit -am "Updated files" 

3 새 지점에 당신이 원하는 무엇이든 제거하고 업데이트 할 수 있습니다 - 다음, 선택 및 스쿼시 어떤 좋은 예쁜 커밋 메시지로 커밋

git rebase -i master 

여기서 기억해야 할 핵심 사항은 다음과 같습니다. 첫 번째 커밋 이후 모든 커밋에 대해 "선택"을 "스쿼시"로 바꾸는 텍스트를 변경합니다. 이렇게하면 모든 커밋이 마스터 브랜치로 스쿼시됩니다.

4 -

git checkout master 

5 마스터 분기를 선택 - 머리와 새로운 기능이 어디까지 마스터 지점으로 이동 :

git rebase new-feature 

당신이에서 모든 명령을 시도 할 수 있습니다 시각적 도구 : http://pcottle.github.io/learnGitBranching/

+5

이렇게하면 이전 커밋없이 스쿼시 할 수 없습니다.라는 메시지가 표시됩니다. http://stackoverflow.com/questions/2563632/how-can-i-merge-two-commits-into-one – backdesk

+0

니스 ... 나는 보통 내 커밋'git rebase -i HEAD ~ ##'을 스쿼시 할 것이다. pull/rebase'git pull --rebase origin master' 리베이스를하기 전/후에 리뷰 할 수있는 두 단계로 수행하는 것과 같습니다. – Tracker1

+1

이 답변은 선택된 것보다 더 적합 해 보입니다 – fernandopasik