본문 바로가기
Program Development Tips/Git

[Git] 여러 커밋을 하나의 커밋으로 만들기: Git의 reset --soft 활용법

by Maccrey Coding 2024. 9. 3.
반응형

 

 

프로젝트를 진행하다 보면 여러 개의 작은 커밋을 하나의 큰 커밋으로 합치고 싶을 때가 있습니다.

이런 상황에서 Git의 reset --soft 명령어를 활용하면 여러 커밋을 하나로 합치는 작업을 손쉽게 처리할 수 있습니다.

이 블로그 포스트에서는 git reset --soft를 사용하여 여러 커밋을 하나의 커밋으로 만드는 방법을 자세히 설명하겠습니다.

1. git reset --soft이란?

git reset --soft 명령어는 현재 브랜치의 HEAD를 이동시키면서, 변경된 파일을 스테이징 상태로 유지합니다.

즉, 특정 커밋을 기준으로 HEAD를 이동시키되, 변경 사항은 그대로 유지하여 새로운 커밋을 만들 준비 상태로 만듭니다.

이를 통해 여러 커밋을 하나의 커밋으로 합칠 수 있습니다.

주요 특징

  • HEAD 이동: HEAD를 이동시키고, 스테이징 상태를 유지합니다.
  • 변경 사항 유지: 기존의 커밋 내용은 보존되며, 변경된 파일이 스테이징 상태로 유지됩니다.
  • 새 커밋 생성: 여러 커밋을 하나로 합쳐 새로운 커밋을 생성할 수 있습니다.

2. 여러 커밋을 하나의 커밋으로 만드는 방법

2.1 현재 상태 확인

변경 사항을 통합하기 전에 현재 상태를 확인합니다. git log 명령어를 사용하여 커밋 로그를 확인하고, 커밋을 통합할 범위를 결정합니다.

git log

2.2 reset --soft 사용하여 커밋 합치기

  1. HEAD 이동: 커밋을 하나로 합치고 싶은 시점으로 HEAD를 이동시킵니다. 예를 들어, 마지막 3개의 커밋을 하나로 합치고 싶다면, HEAD를 합치고자 하는 커밋의 바로 전 커밋으로 이동합니다.
git reset --soft HEAD~3

 

위 명령어는 마지막 3개의 커밋을 통합할 수 있도록 HEAD를 3개 전 커밋으로 이동시킵니다.

 

   2. 새 커밋 생성: 이동된 상태에서 스테이징된 변경 사항을 커밋하여 새로운 커밋을 생성합니다.

git commit -m "새로운 커밋 메시지"

 

  1. 이 명령어는 스테이징된 변경 사항을 하나의 새로운 커밋으로 만듭니다.

2.3 커밋 메시지 수정

새로운 커밋을 생성할 때, 커밋 메시지를 적절히 작성하여 이전의 여러 커밋 내용을 설명합니다.

2.4 원격 저장소 업데이트

로컬에서 커밋을 합친 후, 원격 저장소에 반영해야 합니다. 원격 저장소에 강제로 푸시하려면 --force 또는 -f 옵션을 사용합니다.

git push --force

주의사항: --force 옵션은 원격 브랜치의 기존 히스토리를 덮어쓰게 되므로, 다른 팀원들과 협업 중이라면 신중하게 사용해야 합니다.

3. reset --soft와 rebase -i의 차이점

  • git reset --soft: 특정 커밋으로 HEAD를 이동시키고, 변경 사항을 스테이징 상태로 유지합니다. 여러 커밋을 하나로 합치는 과정에서 유용합니다.
  • git rebase -i: 커밋 히스토리를 재배열하고, 여러 커밋을 하나로 합치는 과정에서 사용합니다. 보다 세밀한 제어가 가능하지만, 상대적으로 복잡할 수 있습니다.

 

git reset --soft 명령어를 사용하면 여러 커밋을 하나의 커밋으로 쉽게 합칠 수 있습니다.

이를 통해 커밋 히스토리를 깔끔하게 정리하고, 의미 있는 단위로 변경 사항을 기록할 수 있습니다.

이 방법은 특히 커밋을 재구성하거나 불필요한 커밋을 정리할 때 유용합니다.

그러나 원격 저장소에 푸시할 때는 주의가 필요하며, 협업 중인 프로젝트에서는 팀원들과의 커뮤니케이션이 중요합니다.

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

반응형