Git은 분산 버전 관리 시스템이므로 원격의 공유 저장소가 있다. Private 하게 원격 저장소를 구축할 수도 있고, 요즘은 GitHub을 SaaS 형태로 사용하면 된다. GitHub에선 Public과 Private이 있는데, Public 은 공짜, Private은 subscription 모델로 월단위로 과금을 한다.
▶ remote 저장소 주소들 (GitHub기준)
- SSH (Secure Shell) : git@github.com:<아이디>/<프로젝트>.git (주로 write 권한을 주고자 할 때 사용 - push)
예) git@github.com:ysyun/jmqtt_client.git - GIT 프로토콜 : git://github.com/<아이디>/<프로젝트>.git (주로 read 권한을 주고자 할 때 사용. 9418포트 사용 - pull)
예) git://github.com/ysyun/jmqtt_client.git - HTTP, HTTPS : https://github.com/<아이디>/<프로젝트>.git (속도 제일 느리지만 방화벽 오픈 필요없음)
예) https://github.com/ysyun/jmqtt_client.git
▶ remote 저장소에 대한 별칭 관리
- git remote add <별칭> <원격지 주소> : 예) git remote add origin https://github.com/ysyun/jmqtt_client.git
- origin : 원격 저장소를 가르키는 일반적인 별칭으로 사용한다.
- git remote -v : 별칭한 내역을 볼 수 있다
- git branch -r : 별칭에 대한 remote repository의 branch를 볼 수 있다
- git remote rm <별칭> : 별칭을 제거한다
$ git clone https://github.com/ysyun/jmqtt_client.git
Cloning into 'jmqtt_client'...
remote: Counting objects: 195, done.
remote: Compressing objects: 100% (140/140), done.
Rremote: Total 195 (delta 54), reused 161 (delta 32)eceiving objects: 65% (127/
Receiving object
Receiving objects: 100% (195/195), 238.32 KiB | 184 KiB/s, done.
Resolving deltas: 100% (54/54), done.
$ cd jmqtt_client/
$ git branch
* master
$ git branch -r
origin/HEAD -> origin/master
origin/master
$ git remote -v
origin https://github.com/ysyun/jmqtt_client.git (fetch)
origin https://github.com/ysyun/jmqtt_client.git (push)
▶ remote 저장소 Pulling
- github의 경우는 머전 github에서 프로젝트의 remote repository를 생성한다
- git clone <remote address>를 통하여 local PC의 local repository로 복제를 한다 (위 예제 참조)
- git fetch <remote> <refspec> : 지역 저장소의 원격 브랜치가 갱신됨 (지역 브랜치에 변경사항을 합치진 않음)
- git pull : default origin 원격 저장소에서 현재 브랜치로 merge 함
- git pull <remote> <refspec> : 원격 장소에서 가져온 소스를 현재 지역 브랜치에 merge 함
- <remote> : 원격 저장소의 별칭 origin을 입력하면 된다. 별칭이 없다면 전체 주소를 넣어야 한다.
$ git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://github.com/ysyun/jmqtt_client
e13af6f..bf80359 master -> origin/master
Updating e13af6f..bf80359
Fast-forward
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
▶ remote 저장소 Pushing
- git push : default origin 저장소를 & 현재 브랜치를 원격의 같은 브랜치로 푸싱한다
- git push <remote> <branch> :현재 브랜치를 원격의 신규 또는 존재하는 branch로 푸싱한다
- git push <remote> <branch1>:<branch2> : 지역 branch1을 원격의 신규 또는 존해하는 branch2로 푸싱한다
- git push --dry-run <매개변수>: 푸싱된 변경 사항을 확인
- <remote> : 원격 저장소의 별칭 origin을 입력하면 된다. 별칭이 없다면 전체 주소를 넣어야 한다.
yuwonsystem01@YSYUN91005152 /d/git-repositories/jmqtt_client (master)
$ touch license.properties
$ vi license.properties
// 파일하나 로컬 저장소에 추가하기
$ git add license.properties
$ git commit -a -m "add license.properties"
[master f5844d4] add license.properties
1 file changed, 1 insertion(+)
create mode 100644 license.properties
// 원격 origin 서버로 현재 master 브랜치내용 push 하기 (id & pwd 물어봄)
$ git push origin master (또는 git push)
Username for 'https://github.com': ysyun@yuwin.co.kr
Password for 'https://ysyun@yuwin.co.kr@github.com':
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 297 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/ysyun/jmqtt_client.git
bf80359..f5844d4 master -> master
* 참조 : 선화의 Git