1. Commit을 왜 합치나요? (git squash)
1. Commit이 무분별하게 쓸데없이 많은 경우
너무 무분별하게 commit을 생성한 경우에 병합하기 위해 사용합니다.
2. 현업에서의 요청
일반적으로 현업에서 개발을 할 경우
Local Repository에 feature 브랜치를 생성해서 작업 후 운영, 개발 브랜치에 merge를 하는 방식으로 개발하게 됩니다.
결국엔 feature 브랜치에서 개발을 하면서 여러 개의 commit이 생성되게 되면서 그대로 운영, 개발 브랜치에 merge 할 경우
운영, 개발 브랜치에도 feature 브랜치의 commit 수 만큼 commit이 증가하기 때문에 하나로 합쳐서
Merge Request, Pull Request 하라는 요청을 많이 받게 됩니다.
2. 명령어 및 실습
$ git rebase -i (대상 바로 이전 commit hash)
[실습 전 준비]
1. 프로젝트 생성(디렉토리 생성)
2. git init
3. 파일 생성 (one.txt)
4. git add . ; git commit -m "main commit"
5. git switch -c feature/1
6. 생성된 파일 수정 및 커밋 (여러 번)
git commit -am "1"
git commit -am "2"
git commit -am "3"
[예시(실습)]
feature/1 브랜치의 1,2,3 commit을 하나의 커밋으로 합치세요.
Git commit 로그 확인
$ git log --pretty=oneline
751765be1b8ea2648d597e8999702275aa3cd5ae (HEAD -> feature/1) 3
1b3d532ee45e1fa93c5d7ea7395e5761b1aa476f 2
193e9dda8fc71a6ba4205eee113b66c602382fcc 1
d4d00dbe7be4ccf50ef68e4751ec119b7468c807 (main) main commit
git rebase -i (대상 바로 이전 commit hash)
1, 2, 3 commit을 병합할 것이므로 이전 커밋인 main commit hash 값을 이용합니다.
$ git rebase -i d4d00dbe7be4ccf50ef68e4751ec119b7468c807
해당 명령어를 실행하게 되면 다음과 같이 출력이 되게 됩니다. (vi 형태)
하단의 Commands를 보고 어떻게 작업할지 작성하면 됩니다.
해당 예시에서는 squash와 commit만 적용해봅니다. (다양하게 수정 가능합니다.)
vi 사용하는 법과 동일하게 다음과 같이 작성 후 :wq로 저장 후 나가기 해줍니다.
pick 193e9dd 1
s 1b3d532 2
s 751765b 3
[설명]
2번과 3번은 이전 커밋에 합쳐질 것이므로 앞에 s로 수정합니다.
1번의 경우 남아서 합쳐져야 되기 때문에 pick으로 둡니다.
:wq로 저장하게 되면 commit 메시지를 어떻게 작성할지 나오게 되는데 작성 후 :wq로 저장해주면 3개의 commit이 병합이 됩니다.
commit 확인
$ git log --pretty=oneline
1ec700c065d1cea5534d66776b7131e02c8c7aed (HEAD -> feature/1) commit squash(1,2,3)
d4d00dbe7be4ccf50ef68e4751ec119b7468c807 (main) main commit
'TOOL > Git' 카테고리의 다른 글
[Git] Git 다른 브랜치에서 원하는 Commit 가져오기 (3) | 2022.09.01 |
---|---|
[Git] Git branch 사용하기 (branch 생성, 삭제, 이동, 수정) (0) | 2022.08.30 |
[Git] Git commit 취소하기, 되돌리기 (reset, revert) (1) | 2022.08.29 |
[Git] Git 기초 사용법 (Local Repository) (0) | 2022.08.28 |
[Git] Git 기초 개념 (Git 사용 전에 알고 있어야 할 개념) (0) | 2022.08.27 |