Git Cherrypick 사용법

Git Cherrypick 사용법

Git Chrrey Pick

다른 브랜치에 반영한 변경 사항을 현재 브랜치로 가지고 오는 것을 '체리 픽'이라고 합니다.

현재 A라는 기능을 branch-A라는 브랜치를 따서 작업 중 입니다. 이때 갑자기 버그 픽스를 해야 하는 태스크가 들어왔을 때 A라는 기능은 branch-A에 커밋한 후 main브랜치로 전환해서 작업중인 내용은 포함이 안되지만 버그 픽스한 수정사항만 반영 하기 위해 사용할 수 있습니다.

git으로도 충분히 모든 과정을 진행 할 수 있지만 파일 목록들과 변경사항을 확인하면서 Chrrey Pick을 하려면 GUI툴이 있는 것이 도움이 됩니다. 여기에서는 Sublime Merge를 사용합니다. 구매하지 않고도 날짜 제한 없이 모든 기능을 사용해볼 수 있습니다. 

Sublime Merge는 다음 링크를 통해 받을 수 있습니다.

Sublime Merge - Git client from the makers of Sublime Text

소스트리는 체리픽 기능이 있지만 파일 단위로는 되지 않고 브랜치 단위로만 되어서 조금 불편합니다.

과정

 

1.지금까지 작업내역 commit하기

a라는 기능을 작업하던 도중 작업이 끝나지 않은 상황에서 수정사항 b가 들어왔습니다. 먼저 commit을 해야 합니다.

다음은 Sublime Merge의 화면입니다. 왼쪽 브랜치 목록에서 NEO-2397-company-id-auto-insert 라는 브랜치에 지금까지 했던 작업 내용을 commit 합니다. 

commit한 브랜치

2.수정사항에 대한 브랜치 생성

main브랜치로 돌아와 branch-B를 딴 후 수정사항에 대한 작업을 합니다.

 

3.commit뒤에 main브랜치

작업이 끝나면 branch-B에 commit후 main브랜치에 머지 합니다. 머지를 했기 때문에 수정사항이 main브랜치에 반영이 되었고 앞에서 a기능을 작업하던 브랜치는 수정사항 앞에 있습니다.

여기에서 chrrey pic을 해서 main에 머지되지 않은 브랜치에 있는 수정사항을 현재 브랜치로 불러 올 수 있습니다.

다음은 앞에서 commit한 브랜치에서 UserServiceImpl.java에 수정한 내용을 Chrrey Pick하는 과정입니다.

main branch에서 NEO-2397-company-id-auto-insert 브랜치를 선택 합니다. 그러면 오른쪽에 브랜치 NEO-2397~의 변경 내역이 나옵니다.

체리픽 하고 싶은 파일명에 마우스 오른쪽 클릭을 한 후 Cherry Pick File을 선택 합니다.

 

4.체리픽된 변경사항 확인

main브랜치에 앞에서 Chrrey Pick한 변경사항이 들어와 있는 것을 볼 수 있습니다. 이제 작업을 이어나가면 됩니다.

Read more

[Terraform 튜토리얼 1-6] 중복 없애다 망한 썰 – DRY 원칙, 정말 항상 맞을까?

[Terraform 튜토리얼 1-6] 중복 없애다 망한 썰 – DRY 원칙, 정말 항상 맞을까?

개발자라면 한 번쯤 들어봤을 말, "Don't Repeat Yourself", 줄여서 DRY 원칙. 이건 소프트웨어 개발에서 아주 중요한 원칙이에요. 중복을 줄이면 버그도 줄고, 유지 보수도 쉬워지고, 코드도 깔끔해지죠. 그런데… Terraform 같은 IaC 세계에서도 DRY가 무조건 좋을까요? 🤔 DRY가 뭔데? DRY 원칙의 핵심은 딱 하나: "같은 걸 반복해서 쓰지 마." * 상수 값, 로직, 설정

By Chansong
[Terraform 튜토리얼 1-5] 선언형 vs 명령형: Terraform은 왜 선언형인가?

[Terraform 튜토리얼 1-5] 선언형 vs 명령형: Terraform은 왜 선언형인가?

Terraform을 쓰다 보면 종종 듣게 되는 말이 하나 있어요: Terraform은 "선언형(Declarative)" 도구다. 그런데 이게 도대체 무슨 뜻일까요? "명령형(Imperative)"이랑은 뭐가 다르고, 왜 Terraform은 선언형일까요? 🧠 선언형과 명령형, 개념부터 정리 구분 선언형 (Declarative) 명령형 (Imperative) 핵심 개념 무엇이 되어야 하는지만 선언 어떻게 할지를 하나하나 명령 예시 “난 스테이크 먹을래” “고기

By Chansong
[Terraform 튜토리얼 1-4] 모듈이 정리가 안 될 땐, 응집도(Cohesion)를 의심하라

[Terraform 튜토리얼 1-4] 모듈이 정리가 안 될 땐, 응집도(Cohesion)를 의심하라

인프라를 코드로 관리할 때, 좋은 모듈을 만드는 핵심 개념 중 하나가 바로 응집도(Cohesion)입니다. 이 단어가 좀 낯설게 느껴질 수 있지만, 사실 우리는 매일 응집도가 높은 시스템 속에서 살고 있어요. ✅ 응집도란? 하나의 모듈이 하나의 책임 또는 기능에만 집중하는 정도 응집도가 높은 모듈은 말 그대로 한 가지 일에만 집중합니다. 그래서

By Chansong
[Terraform 튜토리얼 1-3] 내부는 감추고, 필요한 것만 보여줘 – 캡슐화란?

[Terraform 튜토리얼 1-3] 내부는 감추고, 필요한 것만 보여줘 – 캡슐화란?

Encapsulation, 캡슐화라고 하면 뭔가 개발자스럽고 어려워 보이죠? 객체지향 프로그래밍 할 때나 듣던 단어 같고요. 그런데 이 개념은, Terraform 같은 Infrastructure as Code(IaC)에서도 아주 중요합니다. 이번 글에서는 "캡슐화가 무엇이고", "왜 필요한지", 그리고 "Terraform에서는 어떻게 쓰이는지"를 쉽게 풀어보겠습니다. ✅ 캡슐화, 한 마디로 뭐야? “필요한 것만 보이게 하고, 나머지는 숨기는 것”

By Chansong