일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 리액트
- 쌓임맥락
- SCSS use
- postcss
- 프로그래머스 프론트엔드 데브코스
- 프로그래머스 데브코스
- 프로그래머스 K_Digital Training
- vue mixin
- 이벤트 수식어
- Spacer
- 다른컴퓨터에서 git사용
- SCSS extend
- vuex map
- Vue
- 폼 입력 바인딩
- SCSS import
- git 같은계정 다른 컴퓨터
- KDT 프로그래머스
- netlify redirect
- KDT 프로그래머스 데브코스 프론트엔드
- intersection opserver
- nextjs사용법
- react next
- 고양이 사진 검색기
- SCSS forward
- vue 지역 컴포넌트
- 프로그래머스 데브코스 프론트엔드
- vue 이벤트 수신
- 리스트 렌더링
- flex
- Today
- Total
혼자 적어보는 노트
[Git] 다른 브랜치에서 생성한 커밋 가져오기 / cherry-pick 본문
git cherry-pick
git을 사용하다 보면 커밋을 다른 브랜치에 잘못하거나
다른 브랜치에 있는 커밋을 가져와야 할 경우가 생길 수 있다.
rebase를 하는 방법도 있겠지만 좀 더 간단하게 커밋을 복사해서 가지고 올 수 있는 방법이 있다.
cherry-pick
원하는 커밋을 복사하여 현재 브랜치로 가져오는 명령어이다.
git cherry-pick [가져올 커밋 해시]
현재 브랜치가 main 브랜치인 상태에서 new브랜치에 있는 커밋 해시를 가지고 왔을 경우라면
new브랜치에 있는 커밋은 그대로인 상태에서 main브랜치에 해당 커밋이 복사된다.
cherry-pick한 커밋의 변경사항을 main브랜치의 커밋에 적용하고 새로운 커밋을 기록하는 방식이다.
* cherry-pick을 할 경우 같은 내용의 커밋이 여러 개 생길 수 있고
이후에 어디서 어디로 cherry-pick을 했는지 알 수 없는 상황이 생길 수 있기 때문에 고려하여 사용해야 한다.
commit 메세지를 수정하여 cherry-pick
cherry-pick을 할 경우 기본적으로 커밋이 그대로 복사되는데
메세지를 수정하여 복사하고 싶다면 아래의 명령어를 입력하면 된다.
git cherry-pick -e
여러개의 commit cherry-pick
git cherry-pick [커밋해시] [커밋해시] [커밋해시]
커밋들의 해시를 이어서 입력해주면 된다.
git cherry-pick [첫번째해시]..[마지막해시]
지정할 범위의 첫 번째 해시와 마지막 해시 사이에 ..을 사용하여
cherry-pick할 범위를 지정해 줄 수 있다.
❗ 충돌 상황 (Conflict)
다른 브랜치의 커밋을 가지고 오는 것이기 때문에 해당 커밋이 현재 브랜치의 코드와 충돌이 일어날 수 있다.
cherry-pick한 커밋의 파일이 main 브랜치에서 생성된 것이 아니라
다른 브랜치에서 생성되었을 경우.
git add 파일명
git cheery-pick --continue
이 경우 외의 충돌 상황 시에도 confilct를 해결하고 git cherry-pick --continue 을 진행시켜주면 된다.
cherry-pick 중단
git cherry-pick --abord
cherry-pick을 중단하고 싶다면 --abord옵션을 이용하여 cherry-pick이전의 코드로 돌아갈 수 있다
'기타' 카테고리의 다른 글
redux를 사용한 firebase Google, Github 로그인 / react-redux-firebase (0) | 2022.02.10 |
---|---|
redux를 사용한 firebase 이메일 로그인 / react-redux-firebase (0) | 2022.02.09 |
[Git] rebase -i를 이용한 커밋(commit) 삭제/수정/병합/분할 (0) | 2022.02.07 |
[Git] 브랜치 다루기 2 - HEAD (0) | 2022.02.05 |
[Git] pull / push / fetch 다루기 + 충돌 해결 (0) | 2022.02.05 |