본문 바로가기
GITHUB

[GITHUB] 커밋 합치기 (rebase)

by 햄과함께 2018. 12. 28.
320x100

[ 깃 명령어 (Git command) ]



현재 커밋 상황이다. 위에 있는 커밋일수록 최근에 한 커밋이다.

test1부터 2, 3, 4 차례대로 커밋을 해두었다.


test1, test2 커밋을 합쳐서 하나로 만들고

test3, test4 커밋을 합쳐서 하나로 만들어보자.


1
git rebase -i HEAD~4
cs

위 명령어로 rebase를 실행한다.

HEAD~4 는 HEAD 위치로부터 4개 이전까지의 커밋을 사용(?) 하겠다는 의미이다.



실행 결과는 위와 같다.

주석으로 친절하게 Commands에 대한 설명이 적혀있다.

기본적으로는 pick 명령어(이 커밋을 사용하겠다)로 되어있다.

우리가 사용해야 할 건 이중 "squash" 이다.


s, squash <commit> = use commit, but meld into previous commit


squash 명령어 사용방법은 위와 같다.

설명도 친절하게 적혀있다. 대충 해석해보면 "이 커밋을 사용하는데 이전 커밋과 병합할 것이다." 라는 뜻이다.


이전 커밋과 병합하는 명령어이기 때문에 test2, test4에 이를 적용해야 각각 이전 커밋인 test1, test3과 병합된다.

 

1
2
3
4
pick 6f64739 test1
s edc4a6c test2
pick 7711711 test3
s fe4ba8a test4
cs


따라서 위에서 test2, test4에 적용되는 명령어 pick을 squash로 변경한다.

위와 같이 s 로 적어도되고 squash 로 적어도 된다.


변경하고 저장해주면 된다. 

> :wq  

> Enter


그럼 위와 같은 화면이 뜬다.
밑에 설명을 대충 읽어보면
'#'으로 주석처리 된거는 무시될 것이고 '#' 처리가 안 된 줄들은 병합된 커밋의 커밋 메시지로 사용될 것이다.
위 화면은 test1, test2 커밋을 합친 커밋 메시지에 대한 설명이다. 



테스트 겸 위 그림과 같이 "-- squash end --" 라는 문장을 추가했다.

마찬가지고 저장 후 종료 
> :wq
> Enter

1
2
3
4
5
6
7
8
PS C:\Users\withh\Desktop\GITHUB\Tetris\Tetris> git rebase -i HEAD~4
[detached HEAD f62d78a] test1
 Date: Fri Dec 28 18:43:26 2018 +0900
 1 file changed, 4 insertions(+)
[detached HEAD 7820516] test3
 Date: Fri Dec 28 18:43:53 2018 +0900
 1 file changed, 2 insertions(+)
Successfully rebased and updated refs/heads/master.
cs


커밋 메시지 작성까지 했다면 위와 같이 "Successfully rebased and updated ~~" 라는 문장이 뜬다.

무사히 커밋들이 합쳐졌다.



깃 히스토리로 결과를 확인해보면 위와 같다.

커밋 메시지에 추가로 작성한 --squash end-- 가 적혀있다,

커밋 2개, test3(7711711) + test4(fe4ba8a)가 합쳐져서 새로운 커밋 ID(7820516)로 커밋이 생성된 것을 확인할 수 있다.




[소스트리(Sourcetree)]



이제 소스트리에서도 한 번 해보자.

현재 커밋 상황은 위와 같다.

마찬가지로 테스트용으로 커밋 4개를 만들어놨다.



그래프에서 합치고자 하는 커밋들의 시작 커밋(가장 이전 커밋)이 아닌 시작 커밋의 바로 이전 커밋에서 우클릭을 누른다.

우클릭해서 [커밋ID]의 자식 커밋을 쌍방향 재배치.. 를 클릭하자.




그러면 위와 같은 rebase 창이 뜬다.

합치고자 하는 커밋이 모두 있는 것을 확인할 수 있다.



아까와 같이 squash는 이전 커밋과 합쳐지기 때문에 test2, test4에 squash 를 적용해야 한다.

각 커밋을 클릭한 뒤 "이전 커밋과 합치기" 버튼을 누르면 이전 커밋과 합쳐진다.


각자 합쳐주면 위와 같이된다.

커밋메시지를 수정하고 싶으면 변경하고 싶은 커밋의 Message에 마우스 더블클릭을 한다.



클릭을 하면 위와 같은 화면이 뜬다.

input box에 변경하고자 하는 커밋 메시지를 작성한 다음 확인을 누른다.



확인을 누르면 rebase 결과가 적용된다.



rebase 결과




320x100

댓글