rebase로 commit 추가,수정,삭제하기

rebase 리베이스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# rebase -i :인터렉트 즉, 되감기를 하겠다는 의미
$ git rebase -i --root

# 감았던 rebase 풀기
$ git rebase --continue

# rebase 취소하는 것
$ git rebase --abort

# rebase 초기화
# rebase
$ git reset --hard HEAD~1
$ git reset --hard origin/master

# vi편집기 나가기
:wq -> write and quit(저장하고 나가기의 줄임말)




리베이스 예시 : 커밋추가

가장 오래된 것부터 두번째 커밋 이후에 새로운 커밋 3개 추가하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 리베이스감기 : 오래된 것부터 두번째 커밋에 pick을 edit으로 변경
$ git rebase -i --root

# 새로운 커밋 3개 추가
$ touch 새로운파일1.txt
$ git add 새로운파일1.txt
$ git commit -n "Added 새로운파일1"

$ touch 새로운파일2.txt
$ git add 새로운파일2.txt
$ git commit -n "Added 새로운파일2"

$ touch 새로운파일3.txt
$ git add 새로운파일3.txt
$ git commit -n "Added 새로운파일3"

# HEAD위치 확인
$ git log --oneline

# 리베이스풀기
$ git rebase --continue

# 커밋이 잘 추가되었는지 결과확인
$ git shortlog
$ git log --oneline
$ gitk




리베이스 예시 : 커밋수정

위에서 추가한 커밋 1번2번3번 중에 2번과 3번을 커밋을 한 개로 합치고 싶다면?

  1. rebase -i --root에서 커밋3번에 pick을 edit로 변경해야한다.
  2. 그 뒤 커밋 3번을 reset --soft HEAD~1를 해주면 커밋에서는 사라졌지만 파일은 남아있다.
  3. commit --amend를 해주면 커밋3번이 커밋2번에 흡수된다.
  4. show 커밋ID를 검색하면 2번과 3번이 합쳐진것을 볼 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 리베이스감기
$ git rebase -i --root

# 위의 세번째커밋에 pick을 edit으로 변경해준다.

# HEAD위치 확인
$ git log --oneline

# 세번째커밋삭제
$ git reset --soft HEAD~1
$ git status

# 두번째커밋에 흡수 합치기
$ git commit --amend
$ git show 커밋ID

# 리베이스풀기
$ git rebase --continue

# 커밋이 잘 수정되었는지 결과확인
$ git log --oneline
$ git show 합쳐진commitID




리베이스 예시 : 커밋삭제

가장 오래된 것부터 두번째 커밋 “Add secondCommit” 삭제하려면?

1
2
3
4
5
6
7
8
9
10
$ git rebase -1 -root
# 두번째 pick Add secondCommit을 edit으로 바꿈
$ git status
$ git reset --hard HEAD~1
$ git rebase --continue

# 커밋이 잘 삭제되었는지 결과확인
$ git log --oneline
$ git shortlog
$ gitk

Comments