학습 사이트의 아래 레벨에 해당되는 내용이다.
level remote<num>
git clone <repository URL>
: 원격 저장소(Remote Repository)를 로컬로 복제한다.origin
이라는 기본 원격(remote)이 자동으로 설정된다.origin/main
, origin/feature-branch
같은 형태로 나타난다.git clone
으로 저장소를 복제하면 원격 브랜치들이 로컬에도 트래킹 브랜치로 설정되지만, 직접 변경하거나 커밋할 수 없다. (커밋해보면 HEAD만 움직임)git remote -v
:현재 설정된 원격 저장소 목록을 확인할 수 있다.origin
이라는 이름이 기본적으로 설정된다. (git clone
으로 복제된 원격 저장소)git remote add <name> <url>
로 새 원격 저장소를 추가할 수 있다.git fetch
: 원격 저장소에서 최신 변경 사항(커밋, 브랜치 등)을 가져오되 , 로컬 작업 브랜치에는 병합하지 않고 유지한다. (다운로드와 비슷한 개념)git pull
: 원격 저장소의 최신 커밋을 가져와서 로컬 브랜치에 병합한다. (git fetch
와 git merge
의 조합)git pull --rebase
를 사용하면 fetch
후 rebase
하게 된다.git fetch
는 충돌 가능성을 줄이기 위해 수동으로 병합 과정을 거치고 싶을 때 사용한다.
git pull
은 신속하게 원격 변격 사항을 반영하고 싶을 때 사용한다.
git push
: 로컬에서 작업한 변경 사항을 원격 저장소로 업로드한다.push
할 때는 내가 작업한 브랜치가 원격 저장소에서 최신 상태에서 확인한 후, 최신 상태가 아니라면 git pull
로 먼저 병합을 해야 충돌을 방지할 수 있다.push
했다면 git push
가 거부될 수 있다. (이 경우 최신 상태를 병합 후 push
해야됨)push.default
옵션의 설정값에 따라 달라진다. 해당 설정값은 Git 버전에 따라 기본값이 다르기에, 미리 체크해두면 좋다.nothing
: 아무것도 푸시하지 않음. 명시적으로 브랜치를 지정해야만 푸시가 이루어짐.current
: 현재 체크아웃된 로컬 브랜치를 동일한 이름의 원격 브랜치에 푸시함.upstream
: 현재 로컬 브랜치의 upstream 브랜치(로컬 브랜치와 연결된 원격 브랜치)에 푸시함. (주로 git pull에 설정된 원격 브랜치)simple
: upstream과 거의 비슷하지만, 로컬 브랜치 이름과 원격 브랜치 이름이 동일한 경우에만 푸시함. Git 2.0 이후 기본 설정임.matching
: 로컬에 있는 모든 브랜치를 원격 저장소의 동일한 이름의 브랜치와 일치시켜 모두 푸시함. Git 2.0 이전의 기본 설정임.mirror
: 모든 참조(ref)를 푸시함. 매우 위험할 수 있으며, 일반적인 상황에서는 사용하지 않는 옵션임.