본문 바로가기
개발 도구/Git

커밋 여러개를 하나로 만들고 싶을 때(git reset --soft)

by ♥︎해이나♥︎ 2022. 12. 22.
반응형

여러개의 커밋을 하나의 커밋으로 합치고 싶을 때에 어떻게 하면 되는지 포스팅으로 정리해보려고 한다. 

 

 

문제 상황 예시

premium 브랜치에서 작업을 하고 Add factorial function과 Add factorial function2로 각각 커밋했다.

 

 

그런데 커밋 히스토리를 확인해 보니... 동일한 커밋이 두 개나 있으면 혼란스러울 것 같아서, 이 커밋들을 하나로 합치고 싶다는 생각이 들었다. 그럴 때에는 예전에 소개했던 git reset 옵션을 사용해서 커밋을 합칠 수 있다.

 

 

cf. git reset이 궁금하신 분들을 아래 링크 클릭!

2022.11.09 - [개발 도구/Git] - 특정 커밋 시점으로 돌아가고 싶을 때(git reset)

 

특정 커밋 시점으로 돌아가고 싶을 때(git reset)

과거에 했던 커밋으로 내용을 되돌리고 싶을 때 어떤 커맨드를 사용해야 하는지 알아보자. 특정 커밋 시점으로 되돌릴 때는 git reset 특정 시점의 커밋으로 되돌릴 때는 아래와 같은 커맨드를 사

heinafantasy.com

 

여러 커밋 하나로 합치기(git reset --soft)

git reset 커맨드에서 사용할 수 있는 옵션은 --soft, --mixed, --hard 총 3개이다. 각각의 옵션이 바꿀 수 있는 작업 영역의 범위가 다른데, 이 중에서 --soft 옵션을 사용하면 Working Directory와 Staging Area는 바뀌지 않고 HEAD가 가리키는 Repository 내용만 달라진다. 이 --soft 옵션을 응용해서 커밋을 합치면 된다.

 

 

먼저 커밋 히스토리를 확인한다. 그 다음 git reset 커맨드를 사용해서 합치고 싶은 커밋의 전 단계 버전으로 이동한다. 위의 이미지 같은 경우에는 Add get_Sum function from test branch 인 3a3c354... 버전으로 이동하면 된다.

 

git reset --soft 3a3c

 

그러면 아마 Working Directory 에는 마지막에 작업했던 내용들이 모두 남아있고, HEAD가 가리키는 버전만 과거로 돌아가 있을 것이다. 이 상태에서 다시 커밋을 해주면 된다.

 

 

두 개의 커밋이 잘 합쳐져서, 새로 커밋한 Add factorial function만 남아있는 것을 커밋 히스토리에서 확인할 수 있었다.

반응형

댓글