티스토리 뷰
개요
git pull —rebase 를 쓰자 는 포스팅을 썼음에도 git rebase origin/develop 이라고 쓰고 있다는 것을 자각했다(Pull Request를 develop 브랜치로 하고 있다). 그리고, 이 둘의 차이가 무엇인지 명확히 알지 못한다는 것도 깨달았다.
제대로 정리하고 넘어가자.
TL;DR
git pull --rebase origin develop 를 쓰자
상황
feat/new-fantastic-feature 브랜치에 새로운 기능 구현을 완료하고 Pull Request를 하기 직전이다.
GitHub Repository의 Default branch 설정은 develop 브랜치이다. remote의 develop 브랜치를 rebase 한 다음 깔끔하게 PR을 보내고 싶다.
git pull --rebase origin develop
이 명령은 git pull과 git rebase의 조합이라고 생각하면 된다.
- origin 리모트 저장소로부터 develop 브랜치의 최신 변경 사항을 로컬로 가져온다. 즉, 로컬의 develop 브랜치가 리모트의 최신 상황으로 업데이트 된다.
- 현재 브랜치의 커밋을 origin/develop 브랜치의 최신 커밋 뒤에 재배치한다. rebase 한다는 말이다.
git rebase origin/develop
이 명령은 현재 브랜치의 커밋을 origin/develop 브랜치의 최신 커밋 뒤에 재배치한다.
git pull --rebase origin develop 명령에서의 1, 2번 단계에서 첫번째 단계가 빠지고 두번째 단계만 실행하는 것이다.
origin develop vs. origin/develop
가끔 origin/develop 과 같은 형태의 표현을 보았었는데 정확이 이해를 하지 못하고 쓰고 있었다.
origin/develop → 로컬!
- origin/develop는 리모트 트래킹 브랜치를 의미하며 origin은 원격 저장소의 이름, develop은 원격 저장소에 있는 브랜치의 이름이다.
- 리모트 트래킹 브랜치는 원격 저장소의 브랜치 상태를 로컬에서 추적하는 역할을 한다. 중요한 것은 로컬이라는 것이다.
- 예를 들어, git fetch 명령을 실행하면 origin/develop 브랜치가 원격 저장소의 develop 브랜치와 동기화, 업데이트 된다.
origin develop → 리모트!
- origin develop는 git fetch나 git pull 명령의 인자로 사용되는 경우가 많다.
- 마찬가지로 origin은 원격 저장소의 이름이고, develop은 원격 저장소의 브랜치 이름이다.
- 이 표현은 주로 원격 저장소에서 특정 브랜치를 가져올 때 사용한다. 실제 리모트 브랜치이다.
비교와 차이점
핵심은 로컬의 origin/develop 브랜치가 리모트의 origin develop 브랜치보다 뒤쳐저 있을 수 있다는 것이다.
- 역할과 사용 맥락:
- origin/develop: 리모트 트래킹 브랜치로, 로컬 저장소에 있는 원격 브랜치이다.
- origin develop: 명령어의 인자로 사용되며, 원격 저장소 origin에서 브랜치 develop을 지정하는 역할을 한다.
- 명령어 사용:
- origin/develop: 주로 브랜치를 참조할 때 사용한다.
- 예: git checkout origin/develop, git rebase origin/develop
- origin develop: 주로 원격 저장소에서 브랜치를 가져올 때 사용한다.
- 예: git fetch origin develop, git pull origin develop
- origin/develop: 주로 브랜치를 참조할 때 사용한다.
예시를 통해 좀더 익숙해지자
- git fetch origin develop:
- origin 원격 저장소에서 develop 브랜치를 가져와 로컬 리모트 트래킹 브랜치 origin/develop을 업데이트한다.
- git rebase origin/develop:
- 현재 브랜치를 origin/develop의 최신 커밋 위로 리베이스한다. origin/develop은 로컬에 있는 리모트 트래킹 브랜치이다.
- git pull --rebase origin develop:
- origin 원격 저장소에서 develop 브랜치를 가져와 현재 브랜치를 그 위에 리베이스한다.
- 이는 git fetch origin develop과 git rebase origin/develop을 한 번에 수행하는 것과 같다.
반응형
'git' 카테고리의 다른 글
Git Branch -D 로 삭제한 branch를 복원하려면 (0) | 2022.12.22 |
---|---|
Git branch 일괄 삭제 방법 (0) | 2022.12.22 |
Git에서의 branch name을 대신하는 '-' (hyphen) (0) | 2021.08.31 |
윈도우 PowerShell - custom prompt 스크립트 만들기 (0) | 2020.11.13 |
윈도우 PowerShell에서 git을 좀더 편하게 사용하자 (0) | 2020.11.09 |
반응형
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 인텔리제이
- 잡학툰
- 오블완
- 독서
- clean agile
- Bug
- 티스토리챌린지
- OpenAI
- folklore
- API
- 독서후기
- notion
- bun
- 영화
- Gin
- github
- 엉클 밥
- 체호프
- go
- golang
- intellij
- ChatGPT
- strange
- 2023
- websocket
- 노션
- agile
- solid
- 클린 애자일
- 제이펍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함