1. Cherry-Pick
- 한 개의 작업 브랜치에서 여러 개의 커밋을 생성했을 때, 그 중 원하는 커밋만을 택해서 병합하고 싶을 경우 택하는 방식이다.

하위 브랜치를 만들기 전 기존 작업 환경이라 가정하고 base 브랜치에 base.txt 파일을 생성하여 커밋해놓은 상태이다.
이 상태에서 작업할 work 브랜치를 생성, 두 개의 커밋을 만들어보자.


work 브랜치에서 두개의 커밋을 정상적으로 생성하였다.
이제 다시 base 브랜치로 돌아가 Cherry-pick으로 원하는 커밋만을 병합해보자.

base 브랜치에서 파일 목록을 조회한 결과 base.txt 만이 조회되었고 그 상태에서 Cherry-pick으로
work 브랜치의 "a 생성" 커밋만을 병합한 결과, 원하던 대로 a.txt 파일만이 병합되었다.
협업을 하는 상황에서도 한 사람이 여러가지 기능을 구현하는 경우가 생기는데,
기능 하나씩 병합하여 테스트해보고 싶은 경우 이와 같은 방식을 택하면 효율적일 듯 하다.
2. Merge --squash
- 이번엔 Cherry-pick과 의미적으로 반대되는 squash 기능을 살펴보자.
한 브랜치에서 여러가지 커밋을 생성하는 것은 같으나, 각 커밋들을 따로 살펴볼 필요 없이 한 번에 병합하고 싶을 때 사용한다.
각 커밋들의 로그가 사라지며 새로운 하나의 커밋으로 합쳐지게 된다. 예를 들면, work 브랜치에서 a, b, c 세가지 커밋을 생성하고 이것들을 squash 하게 되면 a' 라는 새로운 커밋이 생성된다. a' 커밋은 a, b, c 세 커밋의 변경사항을 모두 가지고 있으나 각 커밋들의 로그가 남지 않기 때문에 사용할 때 신중할 필요가 있다.
이번에도 마찬가지로 base 브랜치에서 커밋을 해놓은 상태로 work 브랜치로 가보자.

이번엔 보다 직관적으로 보기 위해 세 개의 커밋을 생성해보았다.




이와 같이 squash 한 결과를 커밋하게 되면, 기존 로그는 사라지고 새로운 하나의 로그만이 남는다.
따라서, 기록을 남기지 않아도 될 때에만 사용하는 것이 좋다.
[참조문서]
반응형
'GIT > COMMAND' 카테고리의 다른 글
| [Git] Rebase (0) | 2023.01.08 |
|---|---|
| [Git] Merge (0) | 2023.01.06 |
댓글