git remote
원격 저장소
git clone
원격 저장소의 복사본을 로컬에 생성할 때 사용하는 명령
local
clone 을 하면 origin/main 이라는 새 브랜치가 생긴다 이런 종류의 브랜치를 원격 브랜치라고 부른다 원격 브랜치는 원격 저장소의 상태를 반영한다
원격 브랜치는 체크 아웃을 하게 되면 HEAD 모드로 가게되는 특별한 속성이 있다 이는 원격 브랜치에서 직접 작업할 수 없기 떄문에 이렇게 한다 우리는 다른 곳에서 작업 후 원격 저장소에 작업을 공유해야 한다 그 이후에 원격 브랜치가 갱신된다
원격 브랜치 이름 앞의 origin/ 은 원격 저장소의 이름이다
1
git checkout origin/main; git commit
위와 같이 원격 브랜치로 이동하여 커밋을 하게 되면 HEAD 가 분리된 채로 커밋이 된다 원격 브랜치에는 직접 작업을 추가할 수 없기 떄문이다
만약 위와 같은 명령을 하면 주의! 분리된 HEAD 상태라는 경고가 뜬다
git fetch
깃의 원격 작업은 서로 다른 저장소의 데이터를 주고 받는 것이다
원격 저장소에서 데이터를 가져올 때 fetch 를 사용한다 원격 저장소의 상태가 변하면 원격 브랜치는 작업을 반영한다
fetch 는 두 가지 작업을 수행한다
- 원격 저장소에는 있지만 로컬에 없는 커밋들을 다운 받는다
- 원격 브랜치(origin) 가 가리키는 곳을 최신으로 업데이트 한다
이는 로컬에서 원격 저장소와의 연결을 최신으로 업데이트 하는 것
git fetch 는 원격 저장소에 인터넷 프로토콜을 통해 접근한다
fetch 가 로컬 상태에는 관여하지 않는다 fetch 는 원격 저장소의 작업 트리를 다운로드 하는 것으로 이해하면 된다
fetch 를 통해 원격 저장소의 커밋들을 받았다면 일반 브랜치 처럼 활용할 수 있다
merge, rebase, cherry-pick 등으로 다른 브랜치와 병합하여 변경 사항을 local 에 업데이트 하면 된다
git pull
git fetch 이후 병합하는 과정은 너무 빈번히 발생하는 작업이기 때문에 이 둘을 한번에 하는 기능을 제공하는데 그게 pull 이다
1
git pull <원격 저장소 이름> <해당 저장소의 브랜치 이름>
git pull 명령은 fetch 이후 merge 를 할지 rebase 를 할지 설정해줄 수 있다
git push
로컬의 커밋들을 원격 저장소에 업로드 하는 것
매개변수 없이 사용하는 push 는 git 설정인 push.default 에 따라 결정된다
push 를 하기 전에 원격 저장소에 다른 작업이 올라와있는지 확인하고 pull 한 이후 local 브랜치와 병합, push 해야 한다
1
git pull --rebase
rebase 옵션을 주어 일회성으로 사용할 수도 있다