-
Notifications
You must be signed in to change notification settings - Fork 10
06. git rebase practice: solution
nephilim edited this page Feb 12, 2013
·
1 revision
-
순서 0. git graph
* f70ec47 - (HEAD, master) line7 added (4 days ago) * 8411c8c - line6 added (4 days ago) * b781d82 - merged with line(3,4) (4 days ago) |\ | * 9c6da70 - (line) line4 added (3 weeks ago) | * d9161bf - line3 added (3 weeks ago) * | 07ea1bc - line5 added (4 days ago) // 수정 대상 changeset |/ * 21bb6d0 - line2 added (4 weeks ago) * 3a55ae2 - line1 added (4 weeks ago) * a3d8a4f - initial commit (4 weeks ago)
-
과거로 거슬러 올라가기
-
git checkout 07ea1bc
-
git graph
* f70ec47 - (master) line7 added (4 days ago) * 8411c8c - line6 added (4 days ago) * b781d82 - merged with line(3,4) (4 days ago) |\ | * 9c6da70 - (line) line4 added (3 weeks ago) | * d9161bf - line3 added (3 weeks ago) * | 07ea1bc - (HEAD) line5 added (4 days ago) // HEAD만 이동 |/ * 21bb6d0 - line2 added (4 weeks ago)
-
reset or checkout?
- checkout으로 HEAD만 이동
-
-
cat test.txt
line1 line2 line5"
-
text editor로 수정
-
상태 확인
git status
- 수정된 파일 staging/indexing:
git add `git ls-files --modified`
-
git ls-files --modified
: ls-files의 이해-
--stage
로 staging결과 확인 -
--other --exclude-standard
로 untracked
-
-
-
amend commit
-
git commit --amend -a -C HEAD
-
git graph: SHA 끝
?
는 생성하는 상황에 따라 달라짐을 의미* 8226863? - (HEAD) line5 added (14 seconds ago) | * f70ec47 - (master) line7 added (4 days ago) // | * 8411c8c - line6 added (4 days ago) // | * b781d82 - merged with line(3,4) (4 days ago) | |\ | | * 9c6da70 - (line) line4 added (3 weeks ago) // | | * d9161bf - line3 added (3 weeks ago) // 21bb6d0가 부모 | |/ |/| | * 07ea1bc - line5 added (4 days ago) |/ * 21bb6d0 - line2 added (4 weeks ago)
-
-
새롭게 merge
-
git merge line
- 충돌 수정
-
git commit -C b781d82
- b781d82의 commit message 재활용
-
git graph
* 7fac362? - (HEAD) merged with line(3,4) (13 seconds ago) |\ * | 8226863? - line5 added (4 minutes ago) | | * f70ec47 - (master) line7 added (4 days ago) | | * 8411c8c - line6 added (4 days ago) | | * b781d82 - merged with line(3,4) (4 days ago) | | |\ | | |/ | |/| | * | 9c6da70 - (line) line4 added (3 weeks ago) | * | d9161bf - line3 added (3 weeks ago) |/ / | * 07ea1bc - line5 added (4 days ago) |/ * 21bb6d0 - line2 added (4 weeks ago)
-
-
master 이동
-
git checkout master
-
git reset --hard 7fac362?
-
git graph
* 7fac362? - (HEAD, master) merged with line(3,4) (6 minutes ago) |\ | * 9c6da70 - (line) line4 added (3 weeks ago) | * d9161bf - line3 added (3 weeks ago) * | 8226863? - line5 added (10 minutes ago) |/ * 21bb6d0 - line2 added (4 weeks ago)
-
-
rebase
-
git rebase --onto HEAD b781d82 f70ec47
- 해석:
f70ec47 - b781d82
를 HEAD에 붙인다 - line6, line7 commit을 merge 결과에 더하는 것과 같음
-
git cherrypick 8411c8c
(line6)과git cherrypick f70ec47
(line7)으로 대체 가능
- 해석:
-
충돌 해결
-
git add .
: patch적용 후 commit 은 rebase에게 맡긴다 -
git rebase --continue
-
git graph
* 75b1e5d? - (HEAD) line7 added (24 seconds ago) * b00bba1? - line6 added (24 seconds ago) * 7fac362? - (master) merged with line(3,4) (15 minutes ago) |\ | * 9c6da70 - (line) line4 added (3 weeks ago) | * d9161bf - line3 added (3 weeks ago) * | 8226863? - line5 added (18 minutes ago) |/ * 21bb6d0 - line2 added (4 weeks ago)
-
-
-
또 다른 방법
-
interactive rebase
-
git rebase -i 21bb6d0
1 edit 07ea1bc line5 added // pick > edit 2 pick d9161bf line3 added 3 pick 9c6da70 line4 added 4 pick 8411c8c line6 added 5 pick f70ec47 line7 added 6 7 # Rebase 21bb6d0..f70ec47 onto 21bb6d0
-
-
cat test.txt
후 수정 -
git add test.txt
git rebase --continue
(반복)-
git graph
* 73e1039 - (HEAD, master) line7 added (14 seconds ago) * 50c1835 - line6 added (16 seconds ago) * ac8f855 - line4 added (37 seconds ago) * 9b6f5a6 - line3 added (74 seconds ago) * 235f05d - line5 added (2 minutes ago) | * 9c6da70 - (line) line4 added (3 weeks ago) | * d9161bf - line3 added (3 weeks ago) |/ * 21bb6d0 - line2 added (4 weeks ago)
-
-
git branch -D line
* 73e1039 - (HEAD, master) line7 added (3 minutes ago) * 50c1835 - line6 added (3 minutes ago) * ac8f855 - line4 added (3 minutes ago) * 9b6f5a6 - line3 added (4 minutes ago) * 235f05d - line5 added (5 minutes ago) // ...
-
-
TODO: github에 올려놓고 작업하면 또 새로움