...
GIT 원격 저장소 연동
Git을 제대로 사용하기 위해서는 원격 저장소가 필요하다.
Remote repository(원격 저장소)를 사용하면
- 프로젝트 작업물을 안전 하게 백업할 수 있으며,
- 많은 사람들과 협업이 용이하다는 장점이 있다.
깃허브(GitHub) 란?
깃을 사용해서 클라우드를 쓰듯이 소스들을 업로드해서 저장하고, 다른 개발자들과 공유, 협업 할 수 있는 깃 저장소들 중에 대표적인 것으로 Bitbucket, Gitlab, Github가 있는데, 그 중 깃허브가 가장 유명하다.
깃과 깃허브에 익숙해진다면,
내 소스들을 안전하게 깃허브에 저장하고, 다른 팀원들과 수월하게 협업을 할 뿐 아니라, 깃허브라는 방대한 코드의 숲에서 전세계 뛰어난 개발자들과 함께하는 경험을 할 수 있을 것이다.
저장소 생성하기 (Create Repository)
1. Remote Repository 생성
- 깃헙 사이트 접속 및 로그인
- New(New Repository) 클릭
- Create a new repository 내용 작성
1) Repository name : 앞으로 사용하게될 저장소 이름, 결국 프로젝트 명이 된다. (깃헙 주소 뒤 프로젝트 명이 따라오는 것을 볼 수 있다.)
2) 권한설정
- 공개(Public) : 모든 사용자가 볼 수 있다.
- 비공개(Private) : 나와, 지정한 사용자만 볼 수 있다.
3) "Create Repository" 클릭
2. git remote (Remote Repository 연결)
- git remote 명령으로 현재 프로젝트에 등록된 리모트 저장소를 확인할 수 있다.
- 이 명령은 리모트 저장소의 단축 이름을 지어준다.
- URL은 제일 상단 부에서 확인 가능하고, 클립보드에 복사하도록 제공 하기도 한다.
# git remote add <remote repo 이름> <repo url>
$ git remote add origin https://github.com/inpa-skyrim/git-practice.git
# https://github.com/깃헙계정/리포지터리명.git
# url를 origin이라고 이름을 붙여 추가하겠다는 의미
# url가져오기
$ git remote get-url origin
이로써 Remote Repository와 연결은 끝난 것이다.
옵션
# 옵션 종류 보기
$ git remote --help
# 추가한 원격저장소의 목록 확인
$ git remote
$ git remote -v # 상세히
# 특정 원격 저장소의 정보를 확인할 수 있다.
$ git remote show 이름
# 원격저장소 이름 변경
$ git remote rename 기존이름 변경할이름
# 원격저장소를 제거
$ git remote rm 이름
Remote 저장소 업로드
git push
- 현재 branch에서 새로 생성한 commit들을 원격 저장소에 업로드
- 로컬 컴퓨터에서 작업하고 커밋을 깃허브에서 온라인으로도 볼 수 있다
내 작업들을 깃헙에 올리기(푸쉬하기)
$ git push -u origin master
# origin : 원격주소 / master : 브랜치
# 영어문법 4형식 -> origin에 master를 push하라
⚠️ 그런데 다른 사람이 깃헙에서 hello3.txt를 수정했다고 치자
깃헙에서 수정하고 커밋을 하면,
로컬에는 해당 커밋이 없는데, 깃헙에서 새로운 커밋이 추가됨을 확인 할 수 있다.
즉, 내 로컬 커밋 로그와, 깃헙 커밋 로그가 달라지게 된다.
이것이 바로 협업 과정에서 생기는 충돌이라고 한다.
만일 로컬(나)이 이 사실을 모르고,
로컬이 hello3.txt를 수정하고 push를 하면 이렇게 에러가 뜬다.
에러 내용을 보면 push하기전에 pull하라는 소리가 나온다.
git pull
- 원격 저장소에서 파일 내려받기
- git pull = git fetch + git merge : 원격저장소 커밋과 동기화하고 커밋을 머지 시킨다.
- 원격 저장소와 로컬 저장소의 상태를 같게 만들기 위해 원격 저장소의 소스를 가져오는 것이다.
- 즉 다른 사람들의 작업 변경사항을 클라이언트로 내려받기 한다고 보면 된다.
pull을 통해 서버로부터 작업내용을 가져와보자.
명령어를 실행하면 이렇게 충돌 표시가 나오는걸 확인할 수 있다.
왜냐하면 원격 저장소의 커밋내용과, 로컬 저장소의 커밋내용이 중복되어 겹치기 때문이다.
GIT은 누가 우선순위인지 알지못한다. 따라서 사용자가 고쳐주어야 한다.
# 원격 저장소의 변경사항을 워킹 트리에 반영
# git pull <remote> <branch>
$ git pull origin master
git clone
- 원격 저장소의 저장소를 내 local에서 이용할 수 있게 그대로 똑같이 복사해 가져온다.
$ git clone [remote repo 주소]
$ git clone https://github.com/goddaehee/StuCafeInfoFo.git
🚨 git pull vs git clone 차이점
git pull 명령은 원격 저장소에 있는 프로젝트 내용을 가져오는 역할을 한다.
그러고 보니 git clone도 원격 저장소에 있는 프로젝트 내용을 가져오는 명령이지 않은가?
git pull과 git clone은 명백한 차이점이 있다.
먼저, git clone명령을 사용하면 로컬 저장소의 내용이 원격 저장소의 내용과 일치해진다.
기존에 작업중이었던 사람이 git명령을 사용해서 원격 저장소의 내용을 그대로 가져와버리면 기존에 작업했던 내용들은 당연히 없어진다.
즉, git clone은 프로젝트에 처음 투입될 때 사용되어야 하는 명령인 것이다.
반면 git pull명령은 원격 저장소의 내용을 가져와서 현재 브랜치와 병합(merge) 해주는데, 그 이외의 작업 파일들은 건들지 않는다.
git pull명령은 병합과정도 포함되어 있기 때문에, pull을 하기 전에 commit을 하지 않으면 덮어쓰기 에러가 발생할 수 있다.
즉 기존 작업에 대해 commit을 미리 해두고 pull을 수행해주는 습관을 들이자.
git fetch
- 원격 저장소의 branch와 commit들을 로컬 저장소와 동기화. 단 merge는 안함
- 옵션을 생략하면 모든 원격 저장소에서 모든 브랜치를 가지고 옴
$ git fetch [원격 저장소명] [브랜치명]
다른 사용자 초대하기
- "Settings"탭 클릭 > Manage access > "invite a collaborator" 클릭
- 초대한 사용자 입력, 선택 하기
- 메일을 확인하면 해당 repository invite 메일이 와있을 것이다. "View invitation" 클릭
- 초대 수락 클릭 ("Accept invitation" Click)
※ 초대 받은 사용자 또한 위의 명령어(remote, clone)를 통해 원격 저장소를 연결 해보자.
원격 저장소 연결 및 끊기
먼저 git remote -v 명령어를 사용하여 현재 연결되어 있는 원격 레파지토리를 확인
$ git remote -v
origin https://github.com/IfUwanna/Tool.git (fetch)
origin https://github.com/IfUwanna/Tool.git (push)
기존 리포지토리 remote 제거
해당 원격 저장소의 연결을 제거하기 위해서
git remote remove <name> 옵션을 사용해 주면 연결되어 있는 저장소를 간단하게 끊을 수 있다.
# git remote remove <name>
$ git remote remove origin
이후 다시 -v 옵션을 통해 확인해 보면 연결된 원격 저장소가 없는 것을 확인 할 수 있다.
새 리포지토리 remote 추가
다시 원격저장소와 연결하고 싶은 경우엔 다시 git remote add <name> <url> 옵션을 사용하면 된다.
# git remote add <name> <url>
$ git remote add origin https://github.com/IfUwanna/Tool.git
깃헙에서 소스 및 커밋 내려 받기
예를 들어 회사에 있는 컴퓨터로 작업 후 깃허브에 올린 후 집에 와서 깃허브에서 소스를 내려받아 이어 작업한다고 가정해 보자.
보통 바로 다운받는 방법을 쓸 것이다.
하지만 크게 착각하는 부분이 있는데, 이렇게하면 git으로 작업할수 없다는 것이다.
소스 와 commit내용까지 모두 받아주기 위해, git명령어를 통해 받아오자
원하는 경로로 가서 새 폴더를 만들어준다.
cmd에서 해당 경로로 이동해준다. 그리고 다음 명령어를 입력한다.
git url은 빨간 박스에서 가져오면 된다.
$ git clone https://github.com/유저네임/원격저장소이름.git
협업 작업시 주의할 사항
팀원과 작업할 때는, 먼저 fetch와 status를 통해 pull할 내용이 있는지 먼저 확인하는 것이 중요하다.
$ git fetch
$ git status
이 브랜치가 원격 origin의 마스터에 커밋 하나가 뒤쳐져 있다는 메세지를 볼 수 있다.
이렇게 분업을 하는 경우 pull할 내용이 있을 경우 pull해주지 않으면 로컬에서 작업 후 push를 할 수 없다.
# 원격저장소와 로컬저장소 commit을 일치시키고 merge 시킨다.
$ git pull <원격저장소명> <브랜치명>
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.