git learn branch 정리 2
2023-12-25
clone
- git clone은 로컬에 원격 저장소를 가져오는 것
- 원격 브랜치가 생김 <remote_name>/<branch_name>
- 원격 브랜치로 checkout 하면 HEAD가 분리됨(로컬에서는 원격 브랜치 직접 수정 불가)
fetch
- 원격 저장소에는 있지만 로컬에는 없는 커밋 다운로드
- 원격 브랜치가 가리키는 곳 업데이트 (origin/main)
- fetch 작업은 로컬의 상태를 변경하지 않음에 유의
- pull 명령어는 fetch + merge
fakeTeamwork
- 원격 main에 하나의 커밋을 하기
- 남이 코드를 건드려서 원격 저장소가 변경된 상황을 가정할 때 사용
push
- 원격 저장소에 작업 내용 업로드하고 원격 저장소가 새 커밋을 합치고 갱신
- push를 사용할 때 행동은 git 설정에 따라 결정
- push <remote> <branch>로 현재 HEAD에 상관없이 push 가능
- push <remote> <source>:<destination> 로 특정 source를 원격 저장소의 destination 브랜치로 push 가능
- fetch는 push의 역과정과 비슷함, push의 인자를 그대로 사용가능
협업 과정
- 원격 저장소의 브랜치와 로컬의 원격 브랜치가 다른 경우 push할 수 없음
- 다른 사람이 원격 저장소에 작업을 한 경우
- 이럴 때는 fetch 후 merge 혹은 rebase 해서 원격 저장소와 로컬의 원격 브랜치를 동기화 해 줘야함
- git pull (fetch + merge)
- git pull —rebase (fetch + rebase)
- pull 전에 로컬 변경사항이 있다면 commit 해야 함
원격 추적
- git remote
- 원격 브랜치인 origin/main은 main 브랜치가 원격 추척 하는 브랜치임
- git branch -u 혹은 git checkout -b로 브랜치를 만들면서 원격 추적 브랜치 설정 가능