기록과 정리

자주 사용하는 깃 기능 정리 (rebase, amend, cherry pick, reset, revert, stash) 본문

IT/버전관리

자주 사용하는 깃 기능 정리 (rebase, amend, cherry pick, reset, revert, stash)

zepetto 2021. 2. 1. 15:16

다섯 가지 자주 사용하는 깃 기능 정리(rebase, amend, cherry pick, reset, revert, stash)를 해보려 합니다.

 

1. REBASE

언제 사용할까?

주로 병합 간의 충돌시 사용한다. 서로 다른 브랜치간에 병합시 , 같은 파일을 수정하거나 공통된 수정사항이 있을 경우 Rebase 기능을 사용합니다. 

( 단, rebase 는 hitory를 변경하기 때문에 반드시 혼자 작업하는 브랜치에서만 사용해야하며

 rebase 진행 후 '강제 푸쉬' 해주어야 한다. )

 

Rebase 하기 원하는 브랜치를 선택하고 Rebase 대상이 되는 브랜치 우클릭( fork tool 기준 )하면 아래에 

Rebase '리베이스하고 싶은 브랜치' to Here 기능이 있습니다. 해당 옵션을 선택하면 Merger Conflict 경고 창이 뜰거에요. 당황하지 마시고 충돌을 해결해주면 되는데요.

'<<<<<HEAD' , '====' , '>>>>> 커밋 메세지'

이 세가지 요소가 해당 충돌 구간에 보이게 됩니다. 

<<<<<HEAD는 현재 바라보는 Branch 이고 ====를 기준으로 하여 >>>>>커밋 메세지 를 가진 브랜치로 병합이 됨을 의미합니다. 원하는 소스의 구간을 적절히 해결하면 됩니다. 충돌 해결은 늘 어렵네요 . 충돌 가능성을 안만드는게 우선이겠죠?

 

2. amend

amend는 커밋은 했지만 추가적으로 커밋을 하고 싶을 때 사용합니다. 

 

Fork 라는 툴 기준으로 Commit 버튼 좌측에 Amend 체크박스를 체크시 , 이전에 커밋한 내역과 함께 현재 staging한 파일을 커밋을 할 수 있습니다.

 

3. Cherry Pick

Cherry Pick은 원하는 커밋만을 가져올때 사용합니다. 

 

가령, 운영 중인 서비스(Main branch)에 버그가 발견되고 해당 버그를 수정하기 위해 branch를 개발 소스 (Develop) 브랜치에서 feature를 생성하였습니다. 해당 버그에 대한 수정은 되었지만 기존에 개발 소스는 운영중인 서비스에 반영하고 싶지 않을때와 같은 경우에 Cherry Pick 을 사용합니다.

 

원하는 수정 부분만 가져오고 싶을때, cherry pick을 활용해봅시다.

 

4. reset & revert

reset은 말그대로 다시 되돌리는 것을 의미합니다. 주로 revert와 헷갈리는데요,

reset과 revert의 차이는 옛날 커밋으로 브랜치를 되돌리겠는가해당 커밋을 취소하겠는가 의 의미 차이가 있습니다.

reset은 3가지가 있습니다.

 

mixed - 변경은 하지만 기존에 푸쉬해놓았던 부분은 남겨놓는다. stage에 남겨놓는다. ( 복권은 샀지만 복권 번호는 머리속에 냄겨놓고 과거로 돌아간다. )
hard - 그냥 깔끔하게 되돌리겠다 라는 뜻

soft - mixed와 비슷 하지만 stage 아래에 있다.

 

default로 mixed를 사용합니다.

 

revert의 경우 push를 하여도 revert가 가능하며 commit 이력에 남습니다.

revert한 feature/b branch

또한 A <- F1 <- B <- F2 <- C 와 같은 작업이 있을 경우 , F1과 F2의 커밋을 제외하고 싶을때 revert를 사용합니다.

A<- F1 <- B <- F2 <- C <-F2 revert <- F1 revert

를 함으로써 F1, F2 기능을 제거하는데에도 revert가 사용됩니다. 

 

5. stash

stash는 임시저장을 하는 기능입니다. 개발 중인 내역을 잠시 중단하고 다른 개발을 해야할 때, stash 기능을 사용합니다. stash 를 만들어놓고 다른 개발 건을 진행 완료후 , 기존의 stash를 불러와 apply하는 방식으로 사용합니다.

 

fork 좌측 상단 Stash

fork tool 기준 좌측 상단에 Stash를 만드는 버튼이 존재합니다. 만들어진 Stash는 왼쪽에 다음과 같이 나타납니다.

저장된 Stash

예를 들기위해 만들었지만 이름은 늘 남들이 보기 편하게 지어주세요. 

 

이상 깃에서 자주 사용하는 기능 정리였습니다.

'IT > 버전관리' 카테고리의 다른 글

Git 협업 - branch(feature) 생성 & git flow  (0) 2021.02.06
Git Clone을 받아보자  (0) 2021.02.05
Fork 소개 ( 깃 툴 )  (0) 2021.02.05
Git & GitHub & GitLab  (0) 2020.11.01
git add index.lock 해제  (0) 2019.11.25