관리 메뉴

김종권의 iOS 앱 개발 알아가기

[git] git핵심 git remote, push, clone, fetch, merge, rebase 본문

Git, CocoaPods, Xcode, Shell

[git] git핵심 git remote, push, clone, fetch, merge, rebase

jake-kim 2020. 12. 30. 21:48

git remote

  • 원격 저장소 등록 ("원격 저장소 이름"은 보통 origin 사용)
git remote add {원격저장소 이름} {원격저장소 url}: 
  • 등록한 저장소 확인
git remote

git push

  • 저장소 브랜치에 푸시
git push { 원격 저장소명 } { 원격 브랜치명 }
// git push origin develop
  • 위 명령어를 git push로만 해도 동작 되게끔 등록
git push --set-upstream {원격 저장소 이름 .. origin} {로컬 브랜치 이름 .. master}

원격 저장소 파일 가져오기
핵심: clone은 로컬과 origin을 독립적으로 보고 pull은 종속적으로 보는 것

  • git clone: 단순 가져오는 기능 (로컬에서 작업하던 브랜치와 가져온 브랜치를 각각 독립적으로 보는 것) - 되도록 git pull사용할 것
  • git pull: (해당 remote repository에 권한이 있어야 pull명령어 가능) 가져오기 + 합치기 (git pull = git fetch + git merge)
    새로 가져온(fetch)것은 origin/master, 원래 있던 로컬 브랜치는 (HEAD -> master) 

  • git fetch: 로컬 브랜치는 원래 가지고 있던 최신 커밋포인트를 가리키고 있고, 원격 저장소(origin/master)는 가져온 최신 커밋을 가리키고 있는 상태 

Merge vs Rebase

  • MR수정할 때 rebase vs merge 어떤 차이가 있는지, 어떤게 좋은지 확인
    차이: merge는 커밋 포인트가 하나 생기면서 거기서 합쳐짐 / rebase는 커밋 포인트가 이동하면서 거기로 합쳐짐
    공통점: 둘 다 master에 check out한 다음 merge또는 rebase요청
    • merge: branch가 쌓일 수록 C5에 연결된 브랜치도 많아짐 (브랜치가 많아질 수록 알아보기가 어려워짐)
      master에서 checkout 후 C4에게 merge요청 - 새로운 커밋 포인트 C5가 생성되면서, 여기서 합쳐짐

    • rebase: C3에서 base를 C4로 변경 (C4에게 rebase요청), rebase 후 master는 fast forward(포인터가 최신 커밋으로 이동)

* pull, fetch 참고: opentutorials.org/course/2708

* git merge, rebase 참고 블로그: unordinarydays.tistory.com/161

 

Comments