[첫화면으로]Git/Rebase

마지막으로 [b]

알쏭달쏭한 git rebase. 정확히 어떻게 될 것인가 확신이 없는 상태에서 실전에 적용하자니 영 불안해서, 자꾸 간단한 저장소를 만들어 테스트하느라 시간을 잡아먹는다. 어쨌거나 나중에 볼 수 있게 결과를 적어둠

1. 분기가 두 번 일어났을 때 rebase
2. merge 후 rebase
3. Comments

1. 분기가 두 번 일어났을 때 rebase

(1)
A---B---C    master
     \
      D---E  feature1
 devel \
        F  feature2

이 때 f1을 master로 rebase

(feature1) $ git rebase master
(master)   $ git merge feature1

다음처럼 된다.

(2)
A---B---C---D'---E'    master, feature1
     \
      D
 devel \
        F  feature2

(2)에서, master와 feature2를 머지하면,

(master)   $ git merge feature2

(3-1)
A---B---C---D'---E'  feature1
     \            \
      D            \
 devel \            \
        F------------O master
     feature2

다시 상황 (2)로 돌아가서, 이 상태에서 f2를 또 master에 rebase하면:

(feature2) $ git rebase master

(3-2)
A---B---C---D'---E'    master, feature1
     \            \
      D            F'  feature2
 devel   

(3-2) 같은 경우는 devel 브랜치가 아직 남아 있어서 D가 살아있다. 만일 (2)에서 브랜치를 먼저 삭제한 후 rebase했다면:

(feature2) $ git branch -d devel
(feature2) $ git rebase master

(3-3)
A---B---C---D'---E'    master, feature1
                  \
                   F'  feature2

2. merge 후 rebase

앞 섹션의 (1)에서 다시 시작

(1)
A---B---C    master
     \
      D---E  feature1
 devel \
        F  feature2

여기서 f2를 f1에 merge

(feature1) $ git merge feature2

(2)
A---B---C    master
     \
      D---E
 devel \   \
        F---O feature1
  feature2

이 때 f1을 master로 rebase하면 D,E,F는 어떻게 될까...가 궁금했다 -_-;

(feature1) $ git rebase master

(3)
      master
A---B---C---D'---F'---E'  feature1
     \
      D
 devel \
        F
  feature2

앞 절과 이번 절의 실험에서, merge나 rebase과정에서 전혀 충돌이 발생하지 않게 각 커밋의 내용을 구성한 터라... 충돌이 발생하면 어찌될지는 모르겠다. 차마 해 볼 엄두도 안 남.

3. Comments

[#dogfeet - Git: Rebase는 언제 어떻게 해야 할까?]

이름:  
Homepage:
내용:
 


컴퓨터분류

마지막 편집일: 2013-10-11 11:38 am (변경사항 [d])
1473 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기