Skip to content

박예준 4주차 인증 #175

@jun02160

Description

@jun02160

upstream 과 downstream 정리

push, pull 관계 - remote(upstream) ↔ local(downstream)

remote → local

  • upstream : 공통된 흐름을 하위에 제공
  • downstream : 하위 흐름으로 상위 흐름을 당겨(pull) 받으며, 공통된 흐름이 되어야 하는 부분은 밀어(push) 올리는 관계

*상대적인 개념이므로, 항상 remote - local 관계를 말하는 것 X, 언제든지 상황에 따라 대상이 바뀔 수 있음

여러 개의 remote 운영 방식

협업 상황에서 remote는 여러 개 존재할 수 있다.

  1. 중앙집중식 WorkFlow

    Untitled

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

    Untitled

    • github/gitlab 등에서 repository를 다른 개발자가 자신의 소유로 복사(Fork)하여 작업하는 방식
    • upstream : 코드 소유자의 remote
    • downstream : fork remote (= local의 upstream)
  3. 관리자-부관리자-개발자

    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 initclone으로 원격 저장소 등록 후 저장소 내용을 받아옴
  • 원격 저장소의 주소는 반드시 origin이라는 이름을 사용하지 않아도 됨 (원하는 대로 지정 가능)

자신만의 정리

Remote

local과의 상호작용이 이루어지는 곳 (ex. github, gitlab)

git의 특성상 여러 저장소에서 하나의 작업물을 분산하고 있기 때문에, local 마다 내용은 다를 수 있다

→ 이를 remote 에 올려 sync를 맞추자!

  • *작성자: 박예준

@jinsu4755

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions