원격저장소
는 우리 컴퓨터에서 작업하는 로컬저장소와는 다르게 인터넷, 네트워크에 있는 저장소를 말합니다.
협업
은 repository의 상호작용입니다. 상호작용으로는 크게 5가지가 있어요.
- 원격저장소 추가 (remote)
- 원격저장소에 밀어넣기 (push)
- 원격저장소 복사하기 (clone)
- 원격저장소 동기화 (pull)
- 원격저장소 동기화없이 가져오기 (fetch)
원격저장소 추가하기
내
repository
와원격저장소
를 상호작용하기 위해서 작성하는 명령어$ git remote add origin [URL]
origin
: 원격저장소의 단축이름으로 다른 이름으로 지정가능.
[URL]
: 원격저장소에서 생성한repository
URL을 작성.
$git remote
: 위치한 디렉토리 내 생성된 원격저장소 확인
$git remote -v
: 원격저장소 조회하기
$git remote rm origin
: 원격저장소 삭제하기
원격저장소와 연결할 로컬저장소 repository
를 우선 작업합니다. 저장소 생성 후 commit
까지 완료되면 초기 작업은 끝났습니다.
user@DESKTOP-B5JORJB MINGW64 ~/eced/학습/git/javascript (master)
$git remote add javascript1 https://github.com/example/1234.git
user@DESKTOP-B5JORJB MINGW64 ~/eced/학습/git/javascript (master)
$ git remote
javascript1
user@DESKTOP-B5JORJB MINGW64 ~/eced/학습/git/javascript (master)
$ git remote -v
javascript1 https://github.com/example/1234.git (fetch)
javascript1 https://github.com/example/1234.git (push)
원격저장소 밀어넣기
로컬저장소 repository에 있는 파일을 원격저장소에 반영합니다.
$ git push origin master
내 로컬저장소
master
branch에서 원격저장소origin
에 반영해라
origin
: 원격저장소의 단축이름으로 다른 이름으로 지정가능.
master
: 원격저장소에서 생성한 repository
URL을 작성.
user@DESKTOP-B5JORJB MINGW64 ~/eced/학습/git/javascript (master)
$ git push javascript1 master
정상적으로 원격저장소에 repository 파일이 반영되었습니다.
로컬저장소에 있는 파일 수정 후 다시 commit
작업 해야합니다.
수정된 파일을 확인해보면 commit
을 하라는 안내가 나와요.
commit 후 다시 $ git push javascript1 master
작성해서 정상적으로 원격저장소의 내용도 수정할 수 있습니다.
복사하기
원격저장소 파일은 로컬저장소로 복사합니다.
$ git clone [URL]
동기화
pull
은 원격저장소 파일을 로컬저장소로 동기화합니다. (파일이 덮어씌워진다.)$ git pull origin master
로컬저장소에도 있는 파일을 원격저장소에서 수정 후 pull
을 진행했어요.
(pull 작업을 위해 해당 파일에 원격저장소 연결 작업도 같이 진행)
pull
을 사용하면 원격저장소 추가한 내용으로 파일이 동기화 되었어요.
동기화없이 가져오기
fetch
는 원격저장소 파일을 로컬저장소로 동기화하지 않고 데이터를 가져옵니다. 따로 병합을 진행하거나 읽을 수 있는 전용 branch에서 동기화된 파일을 확인할 수 있습니다.$ git fetch origin
user@DESKTOP-B5JORJB MINGW64 ~/eced/학습/git/javascript/collaboration (master)
$ git fetch col
user@DESKTOP-B5JORJB MINGW64 ~/eced/학습/git/javascript/collaboration (master)
$ git checkout col/master
user@DESKTOP-B5JORJB MINGW64 ~/eced/학습/git/javascript/collaboration ((af30ab6...))
$
fetch
를 해서 로컬저장소로 동기화할 경우 파일이 업데이트가 안 돼 있습니다. fetch
는 기존 파일을 동기화 시키지 않고 특정 branch에서 변경된 내용을 확인할 수 있습니다.
$ git checkout origin/master
branch
는 master
에서 af30ab6...
로 변경됩니다. 해당 브랜치에 checkout 했을 때 수정된 파일을 볼 수 있습니다.