728x90
1. Upstream, Origin, 그리고 Local이란?
- 깃 개념에서 위의 3가지는 '상대적인 위치'를 나타낸다.
- 예를 들어 친구들과 함께 거대한 웹 프로젝트, 'Our Web'를 만든다고 치자. 친구 중 한 명이 레포를 만들 것이고, 나머지 친구들은 fork를 통해 그 레포를 자신의 깃허브 레포에 옮겨올 것이다. 그리고 이 프로젝트는 역할 분담이 있기에 fork한 저장소를 각자 개인 PC로 clone하여 개인 작업을 수행할 것이다.
- 이때, 한 친구가 판 Our Web의 원천이 되는 저장소를 Upstream이라고 하고, 그것을 fork한 나의 저장소를 Origin이라고 하며 Origin을 클론하여 업무를 수행하는 나의 PC를 Local이라 한다.
2. Fork부터 Pull request까지
- 그렇다면 두가지 궁금증이 더 생긴다.
- Q1. 내가 작업한 내용들과 친구들이 작업한 내용은 어떻게 하나의 프로젝트에 모이게 될까? (1) Pull Reqeust와 Merge 확인
- Q2. 친구들이 작업한 최신 작업 내용은 어떻게 내 로컬로 받아올 수 있을까?? (2) Upstream의 Commit 가져오기/동기화하기
(1) Pull Request와 Merge
- Commit & Push : Local에서 작업한 내용은 Commit and Push를 통해 Origin 저장소로 옮길 수 있다. (필자는 IntelliJ에서 cmd + 0을 누른 뒤 딸깍 커밋을 한다...!!! 이때 추가적으로 커밋 문구에 convention을 추가해준다면 당신은 짱 멋진 개발자)
- Pull Request : Origin에서 Upstream으로 작업한 내용을 옮기기 위해서는 Pull Request를 해야하는데, 내 깃허브 Origin 저장소 홈페이지에서 Pull Request 과정을 수행할 수 있으며 수행 과정은 다음과 같다.
- <> code 배너 옆에 있는 Pull Reqeusts 배너 누르기
- New Pull Request 클릭
- ⭐️⭐️⭐️⭐️ Origin과 Upstream의 이름 및 branch 이름을 반드시 확인한 뒤 Pull Request 진행 (만약, 다른 팀원이 작업한 브랜치로 pull request하게 된다면 꼬일 수도 있다...!!)
- PR 과정에서 코드 리뷰를 진행할 수 있다.
- Merge : Upstream 저장소를 판 친구는 알고 보니 엄청난 고수였다...!!! 그는 내가 작업한 코드를 리뷰하고 문제가 없다면 곧바로 Merge시켜준다고 하였다.
- 리뷰하는 과정에서 수정사항이 있다면 Pull Request를 새로 보내는 것이 아니라 기존의 것으로 계속 이어서 작업할 수 있다!
- 문제 사항이 없다면 친구한테 Merge를 요청하여 내가 작업한 코드를 Upstream 저장소로 옮기자!
(2) Upstream의 Commit 가져오기/동기화하기
- 2가지 방법으로 다른 친구들이 작업한 최신 작업 내용을 가져올 수 있다.
- 깃허브 Origin 저장소 홈에 있는 Sync Fork 버튼 누르기. 그러면 Upstream 저장소의 변경점들을 Origin 저장소로 옮겨진다. 이후 git pull origin {branch name} 명령어를 통해 최신 변경 사항을 가져와 현재 작업 중인 local로 가져올 수 있다. 이때 {branch name}은 origin의 브랜치이다.
- Git 명령어로 수동 Sync
git remote add upstream `upstream url` // upstream 설정
git pull upstream `branch name` // upstream에서 로컬로 변경된 내용 들고오기
git push origin `branch name` // 로컬에서 origin으로도 보내주기
+ Tip
git remote -v // 연결된 원격 저장소 확인
git remote rm {remote name} // 원격 저장소 삭제 ex) upstream, origin
3. Origin에서 Local로 git clone하는 방법
// 흔히 사용하는 방법 (`.git` , 즉 git init이 자동으로 됨! 브랜치도 메인으로 가져옴)
git clone {origin repo url}
// 특정 branch를 clone하는 방법
git clone -b step1 --single-branch https://github.com/{본인 아이디}/{저장소 URL}
4. Branch 생성, 삭제 및 변경
- 필자는 intelli-j의 git 항목(커맨드키 + 9)을 애용한다.
git checkout -b `branch name` // 브랜치 생성 명령어 (생성 시 자동으로 생성된 브랜치가 바뀜)
git branch -rm `branch name` // 브랜치 삭제 명령어
git checkout `branch name` // 브랜치 변경하는 명령어
5. Github - Flow
- github 환경에서의 branch 전략
'Git' 카테고리의 다른 글
[Git] Github 사용법 (0) | 2024.03.13 |
---|---|
[Git] git clone을 통해 Repository에 소스 올리기 (1) | 2021.10.02 |
[Git] git bash를 사용하여 Repository에 소스 올리기 (0) | 2021.08.10 |