2014-11-28 4 views
2

아래에서 볼 수 있듯이 중첩 분기가 있습니다. 1 단계는 step-0을 기반으로하고 2 단계는 1 단계를 기반으로합니다.하위 분기에 커밋을 전파하는 방법은 무엇입니까?

"업데이트 된 명령어"(강조 표시된 주황색)라는 단계 -0에서 새 커밋을 만들었으므로 모든 하위 분기에이 커밋을 적용하고 싶습니다. => 장소 "업데이트 명령"

repo gitg visualisation

는 내가하고 싶은

실제 "업데이트 단계 0"과 "1 단계"사이에 커밋

What I would like

나는 생각했다. t rebase 푸시, 하나씩 하나의 브랜치가 있지만 작동하는지 확실하지 않습니다.

+2

하위 분기의 근원에있는 상위 분기에서 나중에 커밋을 넣으려면 상위 분기에서 해당 하위 분기를 리베이스해야합니다. 나는 자동화 된 방법이 있다고 생각하지 않는다. (특히 당신이 역사를 바꾸고 있기 때문에 업스트림을 푸시하고 싶다면 푸시해야 할 것이다.) –

+0

Yeh 그게 내가 생각한거야 : ( – Nicolas

+0

왜 3 개의 분기를 하나로 병합 할까? – Alex

답변

0

첫째, git checkout -b step-1 origin/step-1 : 그 후

git rebase origin/step-0 

, git checkout -b step-2 origin/step-2 : 모든 지점 선형화 할 때까지

git rebase step-1 

반복 :

git checkout -b step-<n> origin/step-<n> 
git rebase step-<n-1> 

마지막으로, git checkout master :

,536 타이핑을 많이 포함 물론

git push --force origin step-1 step-2 step-3 step-4 step-5 step-6 step-7 master 

,하지만 당신은 쉽게 스크립트 언어로 그것을 자동화 할 수 있습니다 :

git rebase step-7 

이 작업이 완료되면. 아마도 일회용 작업 스크립트를 작성하는 시간을 절약하고 수동으로 작업을 수행 할 수 있습니다. :)

+0

"단계 6과 단계 7이 현재 역사에서 다른 것처럼 보이지만 원하는 역사는 단계 6을 보여주지 않습니다."-> 실수. 페인트를 만들 때 step-6 가지 꼬리표를 잊어 버렸습니다 : p – Nicolas

+0

OK, 저의 첫 번째 생각이었습니다. 감사합니다. 나는 그것을하기위한 게으른/똑똑한 방법이 있기를 바랐습니다. – Nicolas

+0

@ Nicolas 스크립트 작성은 똑똑합니다. 솔루션 : 입력하는 것보다 빠르면 스크립팅 기술에 따라 다릅니다. ;-) –

관련 문제