git 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
앞 섹션의 (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과정에서 전혀 충돌이 발생하지 않게 각 커밋의 내용을 구성한 터라... 충돌이 발생하면 어찌될지는 모르겠다. 차마 해 볼 엄두도 안 남.