2012-03-12 3 views
0

내 워크 플로우는 다음과 같습니다. development라는 주 분기가 있으며, 항상 통과 테스트가 있어야합니다. ,다음 시나리오에서 git rebase를보다 효과적으로 사용하는 방법

git push -u origin feature_name 

그런 다음 나는이 지점에 커밋 계속 :

git checkout -b feature_name 

그런 다음에 그것을 위해 원격 추적 브랜치를 만들 : 기능에 작업 할 때, 나는 새로운 지점과 함께이 티켓에서 작동하도록 만들 때로는 다음과 같이 개발에서 병합합니다.

git checkout develop; git pull; git checkout feature_branch; git merge develop 

개발 분기에서 계속 업데이트되도록합니다. I 완료하고 때

, 나는에이 지점을 통합 개발하고 밀어 :

git checkout develop; git pull; git merge feature_branch; git push 

이 병합의 자식 풀 전략을 사용합니다. 그러나 위의 작업을 수행 할 때 때때로 내 커밋이 위에 표시되거나 때로는 어딘가에 표시되고 때로는 산재되어 있으므로 내가 한 일을보기가 어렵습니다. 위의 scanario에서 리베이스 (rebase)를 사용하여 커밋의 내역이 맨 위에 표시되도록하는 방법을 알고 싶습니다.

답변

1

git merge develop에서 git rebase develop으로 변경하십시오.

1

는 세 번째 줄에

git checkout develop; git pull; git rebase feature_branch; git push;

주의 사항

git rebase origin/develop

과 끝에서 워크 플로우를 변경 : 원격 리베이스하지 않는 경우 REBASE은 문제없이 작동합니다 커밋. 너는 원격 역사를 바꾸고 싶지 않아?

+0

나는 리베이스를 전혀 사용하지 않으므로 원격 커밋을 리베이스하지 않아야한다! – umar

+0

그래서, 내 워크 플로에서 당신의 대답에 따르면, 나는 모든 자식 - 병합 명령을 자식 - rebase 명령으로 바꿉니다. – umar

+0

프로젝트의 복사본을 만들고'git push '하지 않고이 명령을 시도하십시오. 이 경우 리모컨을 망칠 필요가 없습니다. (만약 내가 새로운 것, 아마도 파괴적인 특징을 시도한다면이 작업을 항상 수행한다.) 리베이스하면 Merge 커밋이 없으므로 기록이 깨끗해진다. 그리고 원점을 리베이스하면 체크 아웃/풀/체크 아웃/병합 할 필요가 없습니다. – Vili

관련 문제