일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 |
Tags
- ucpc 2024 예선 e번
- ERD
- 지금 자면 꿈을 꾸지만
- insomnia
- JavaScript
- string
- 자바스크립트
- branch
- 백준 28303번
- ucpc 2023 예선 d번
- MongoDB
- router
- Github
- 더 흔한 색칠 타일 문제
- 백준 32029번
- ucpc 2023 예선 i번
- 그리디
- Next
- 게임 서버 아키텍처
- html5
- map
- 백준 32028번
- ccw 알고리즘
- localstorage
- HTTP
- Prisma
- MySQL
- Express.js
- pm2
- PROJECT
Archives
- Today
- Total
dh_0e
[Git/GitHub] Git rebase, Git squash로 커밋 정리하기 본문
Git squash
- 여러 개의 커밋을 하나의 커밋으로 합치는 방법
- Git 히스토리를 깔끔하게 유지할 수 있음
- 하나의 기능이나 버그 수정에 대한 변경 사항을 단일 커밋으로 묶어 관리할 수 있음
squash가 필요한 상황
- 여러 개의 작은 커밋이 있는 경우: 기능 개발 중, 여러 번의 커밋을 만들었지만, 실제로는 하나의 커밋으로 합치는 것이 더 의미있을 때
- 중복되거나 불필요한 커밋이 많은 경우: 코드를 수정하면서 실수로 많은 중복 커밋이 생겼을 때
- PR(Pull Request) 전 커밋 정리: PR을 제출하기 전에 커밋을 정리하여 코드 리뷰어가 쉽게 이해할 수 있도록 할 때
사용 방법
1. Git 로그 확인
git log
- 'git log' 명령어를 사용하여 최근 커밋 로그를 확인
- Git Desktop을 사용하거나 CLI로 커밋을 확인할 필요가 없을 시 생략
2. Interactive Rebase 시작
git rebase -i HEAD~3
- 'git rebase' 명령어를 사용하여 squash할 커밋의 범위를 지정하여 Interactive Rebase를 시작
- 위 명령어는 최근 세 개의 커밋을 합치는 명령어
3. 커밋 합치기
- Interactive Rebase editer가 열리면, 'pick'을 'squash'로 변경하여 커밋을 합친다.
pick a4b8f6d first commit
squash 3adf3e7 second commit
s 9fceb02 third commit
- 'squash'는 's'로 생략 가능
- 이렇게 설정하고 editer를 닫으면 Git이 커밋을 합치는 과정을 시작한다.
4. 커밋 메시지 수정
- editor가 닫히면 다음과 같은 editor가 나온다.
# This is a combination of 3 commits.
# This is the 1st commit message:
Initial commit
# This is the commit message #2:
Fix typo
# This is the commit message #3:
Add new feature
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
- Git이 rebase를 통해 squash를 할 때, 이전에 작성한 커밋 메시지는 어떻게 할지 사용자에게 물어보는 editor
- 아래와 같이 커밋 메시지를 하나로 합칠 때 사용할 메시지를 입력하고 wq로 저장후 닫는다.
# This is a combination of 3 commits.
# This is the 1st commit message:
Squash all commit!
5. Rebase Complete
- 메시지를 작성하고 저장하면, Git이 rebase를 완료한다.
- 충돌이 발생하면, 아래 명령어로 충돌을 해결하고 rebase를 계속 진행한다.
git rebase --continue
'Git|GitHub' 카테고리의 다른 글
[Git/GitHub] Readme 파일/폴더 구조 작성 (0) | 2024.07.19 |
---|---|
[Git/GitHub] Default branch 바꾸기 (1) | 2024.07.15 |
[Git/GitHub] Git & Github로 협업하는 법 (branch) (0) | 2024.05.01 |