주요명령
리모트 저장소 복제
- git clone (리모트 저장소 URL)
리모트 저장소의 추가
- git add (리모트 저장소의 별명) (리모트 저장소의 URL)
리모트 저장소의 삭제
- git remote rm (리모트 저장소의 별명)
리모트 브랜치와 동기화
- git fetch (리모트 저장소의 별명) (리모트 브랜치)
(리모트 저장소 별명)에 해당하는 저장소의 (리모트 브랜치)를 현재 선택된 로컬 브랜치로 가져온다. - git pull (리모트 저장소의 별명) (리모트 브랜치)
git fetch명령을 실행하고 자동으로 merge(병합) 하기 - git push (리모트 저장소의 별명) (리모트 브랜치)
(리모트 저장소 별명)의 (리모트 브랜치)로 로컬 브랜치를 전송한다.
이 명령을 수행하기 전에 git fetch나 git pull을 수행한다.
리모트 브랜치 생성
- git checkout -b (새로운 브랜치)
(새로운 브랜치)를 로컬 브랜치로 만든다. - git push (리모트 저장소) (리모트 브랜치)
(리모트 저장소)에 (리모트 브랜치)를 생성하고 현재의 로컬 브랜치와 추적상태를 만든다.
리모트 브랜치 현황보기
- git remote
로컬 브랜치에 연결되어 있는 리모트 브랜치 리스트 보기 - git remote show (리모트 브랜치)
(리모트 브랜치)와 로컬브랜치의 관계를 상세히 보기
리모트 브랜치 삭제
- git push (리모트 저장소의 별명) :(리모트 브랜치)
(리모트 저장소의 별명)의 (리모트 브랜치를 삭제) ':' 앞에 뛰어쓰기해야 함
git fetch VS git pull
git fetch와 git pull 중 어떤 것이 더 나은 방법일까? 정답은 없지만 git fetch가 더 바람직하다. git fetch는 원격저장소의 내용을 모두 가져오지만 그것을 working copy에 합치지 않는다. 다시 말해서 소스가 변경되지 않는다는 것이다. 그럼 어떻게 해야 코드가 최신 상태가 될까? git merge 명령을 실행시키면 된다. 그럼 fetch를 통해서 가져온 원격 저장소의 소스와 자신이 작업하고 있었던 소스가 병합(merge) 된다.
간단하게 pull하면 되는데 fetch를 하는 이유는 무엇일까? fetch를 하면 실제로는 working copy에 반영되지 않기 때문에 원격 저장소와 로컬 저장소 사이의 차이점을 비교 할 수 있다. 문제점이 있는지 여부를 미리 검토 할 수 있는 것이다. 필자의 경우 fetch를 이용하는 경우 아래와 같은 흐름으로 작업을 한다.
git fetch; #원격 저장소에서 로컬 저장소로 변경점을 가져온다. 단, Working Copy에는 반영하지 않는다.
git log git log ..origin/master; #fetch를 이용해서 가져온 변경점과 Working Copy 사이의 차이점만 보여준다.
git merge; #fetch를 이용해서 가져온 내용을 Working Copy에 반영한다. 만약 fetch를 이용해서 가져온 변경 점 중에 특정 커밋 이전만 Working Copy에 반영하고 싶다면 git merge 뒤에 커밋 ID를 붙인다.