upstream 과 downstream 정리
push, pull 관계 - remote(upstream) ↔ local(downstream)
remote → local
upstream : 공통된 흐름을 하위에 제공
downstream : 하위 흐름으로 상위 흐름을 당겨(pull) 받으며, 공통된 흐름이 되어야 하는 부분은 밀어(push) 올리는 관계
*상대적인 개념이므로, 항상 remote - local 관계를 말하는 것 X, 언제든지 상황에 따라 대상이 바뀔 수 있음
여러 개의 remote 운영 방식
협업 상황에서 remote는 여러 개 존재할 수 있다.
-
중앙집중식 WorkFlow

- 가장 많이 사용됨
- 하나의 remote를 upstream으로 두고, 각 개발자는 local이라는 downstream에서 이를 개발해서 주고받는 방식
-
통합 매니저 WorkFlow

- github/gitlab 등에서 repository를 다른 개발자가 자신의 소유로 복사(
Fork)하여 작업하는 방식
upstream : 코드 소유자의 remote
downstream : fork remote (= local의 upstream)
-
관리자-부관리자-개발자
e.g 한 프로젝트에 수백명의 개발자가 참여하는 Linux 커널 프로젝트
clone, fetch, pull 차이 정리
fetch
단순히 local의 origin이 보는 내용을 가져오는 것 → remote에 내용을 받아오기만 할 때 사용 (합치지 않고 확인)
merge : 서로 다른 흐름을 가져오는 것
- fetch + merge : 3-way merge와 같이 동작
- 주로 diff라는 변경의 차이를 확인하는 명령어와 함께 사용하기도 하며, 두 변경에 문제가 없다면 merge 한다
pull
remote의 내용을 받아서 내 local에 적용할 때 사용
- fetch + merge를 한번에 실행하는 역할
- 보다 검증된 내용을 가져오게 됨
- [option] fast-forward | 3-way merge | rebase
clone
초기 프로젝트 파일을 원격 저장소의 주소(origin)로 local에 복제하는 것
[명령어]
### 기본
$ git clone "원격 저장소 주소" <지정할 폴더>
### 특정 Branch or Tag만 Clone
$ git clone --branch [branch or Tag] "원격 저장소 주소"
### 최신 변경만 반영된 소스코드 Clone (얕은 클론)
$ git clone --depth=[원하는 깊이] "원격 저장소 주소"
- 파일을 만들고
git init 및 clone으로 원격 저장소 등록 후 저장소 내용을 받아옴
- 원격 저장소의 주소는 반드시 origin이라는 이름을 사용하지 않아도 됨 (원하는 대로 지정 가능)
자신만의 정리
Remote
local과의 상호작용이 이루어지는 곳 (ex. github, gitlab)
git의 특성상 여러 저장소에서 하나의 작업물을 분산하고 있기 때문에, local 마다 내용은 다를 수 있다
→ 이를 remote 에 올려 sync를 맞추자!
@jinsu4755
upstream 과 downstream 정리
remote → local
upstream: 공통된 흐름을 하위에 제공downstream: 하위 흐름으로 상위 흐름을 당겨(pull) 받으며, 공통된 흐름이 되어야 하는 부분은 밀어(push) 올리는 관계*상대적인 개념이므로, 항상 remote - local 관계를 말하는 것 X, 언제든지 상황에 따라 대상이 바뀔 수 있음
여러 개의 remote 운영 방식
중앙집중식 WorkFlow
통합 매니저 WorkFlow
Fork)하여 작업하는 방식upstream: 코드 소유자의 remotedownstream: fork remote (= local의 upstream)관리자-부관리자-개발자
e.g 한 프로젝트에 수백명의 개발자가 참여하는 Linux 커널 프로젝트
clone, fetch, pull 차이 정리
fetch
merge: 서로 다른 흐름을 가져오는 것pull
clone
[명령어]
git init및clone으로 원격 저장소 등록 후 저장소 내용을 받아옴자신만의 정리
Remote
local과의 상호작용이 이루어지는 곳 (ex. github, gitlab)
git의 특성상 여러 저장소에서 하나의 작업물을 분산하고 있기 때문에, local 마다 내용은 다를 수 있다
→ 이를 remote 에 올려 sync를 맞추자!
@jinsu4755