본 포스팅은 Git- 깃(git) 알아보기!와 이어집니다!
이번에는 GitHub에 대해 알아보겠습니다.
Git으로 관리한 프로젝트를 올려둘 수 있는 사이트가 바로 GitHub입니다.
뿐 만 아니라 Git의 역할(버전 관리, 협업)도 가능합니다!
즉 Git의 역할을 하는 원격 저장소라고 생각하시면 됩니다!

GitHub에 위치한 Repository는 리모트 레포지토리라고 합니다.
내 Pc에 위치한 Repository는 로컬 레포지토리라고 합니다.
먼저 리모트 레포지토리를 만드는 방법에 대해 소개하겠습니다!
그러기 위해서 GitHub에 먼저 가입해봅시다!
https://github.com/
가입을 하셨다면 아래 이미지에서 (New)를 클릭해주세요!

이후 레포지토리의 정보(이름,설명)를 입력합니다.
일단 체크 박스는 아무 것도 클릭하지 않습니다!

마지막으로, Create Repository를 하고 아래 이미지가 나오면 성공입니다!

리모트 레포지토리 연동
이번에는 로컬 레포지토리와 리모트 레포지토리를 연동해보겠습니다!
연동을 하면 로컬 레포지토리의 커밋을 리모트 레포지토리에서도 이용할 수 있습니다.
먼저 커밋 주소를 복사해주세요!
가장 최근 이미지에서 주소 오른쪽에 위치한 버튼을 클릭하면 자동 복사됩니다.
(SSH에 해당하는 주소를 복사해도 됩니다.)
이후 git bash에서 아래의 명령어를 차례로 입력합니다.
git remote add origin (커밋 주소)
: (커밋 주소)를 이용해서 연동할 리모트 레포지토리를 지정합니다. 이후 해당 리모트 레포지토리는 origin이라고 부릅니다.
git push -u origin master
: 로컬 레포지토리의 내용을 처음으로 리모트 레포지토리(origin)에 전송합니다.
두 번째부터는 git push만 입력하면 됩니다.
(두 번째 이후로 푸시 오류가 발생한다면 –force 옵션으로 해결 가능)

필자의 경우 SSH 주소를 이용하였습니다.
이 때 ‘Please make sure you have the correct access rights and the repository exists.’ 라는 문구가 뜬다면
아래의 회복맨님 포스트를 확인해주세요!
https://recoveryman.tistory.com/283
만일 연동이 성공하면 아래와 같이 커밋을 확인할 수 있습니다!

만약 반대로 리모트 레포지토리의 내용을 로컬 레포지토리에 보낼 때는 다음의 명령어를 이용합니다.
–> git pull
git push는 로컬 레포지토리가 리모트 레포지토리보다 최신 커밋이어야 적용됩니다!
ex) 로컬에서는 커밋2까지 만들어짐, 리모트에서는 커밋1까지 만들어짐 -> push 가능
git pull은 리모트 레포지토리가 로컬 레포지토리보다 최신 커밋이어야 적용됩니다!
ex) 로컬에서는 커밋1까지 만들어짐, 리모트에서는 커밋2까지 만들어짐 -> pull 가능
리모트 레포지토리의 필요성
리모트 레포지토리는 보통 두 가지 이유로 필요합니다.
- 안정성
컴퓨터에 문제가 생겨서 로컬 레포지토리가 사라질 경우 예방이 가능합니다. - 협업 가능
다른 개발자가 리모트 레포지토리를 가져와서 새로운 커밋을 하고 git push를 할 수 있습니다.
GitHub으로 협업하는 방법
개발자들은 보통 깃허브에 올라온 레포지토리를 가져온 다음, 새로운 커밋을 하고 다시 push하는 방법으로 협업을 합니다.
(설정 – Manage access 탭)에 들어 갔을 때 Public Repository 상태이면 누구든지 레포지토리의 내용을 가져갈 수 있습니다. 하지만 남이 git push를 하기 위해서는 Invite a collaborator 기능을 이용해서 git push도 할 수 있는 상대를 지정해야만 합니다. 이 기능을 통해 모든 인증이 끝나면 자신의 GitHub페이지에 새로운 레포지토리가 부여됩니다.
이후부터는 새로 부여받은 레포지토리의 push와 pull이 자유로워집니다!

상대방의 레포지토리를 가져오는 방법
이번에는 단순히 상대방의 레포지토리를 가져오는 방법을 소개합니다.

원하는 레포지토리의 Code버튼을 클릭 후 커밋 주소를 복사한 뒤 git clone명령어를 이용합니다.
이는 단순히 git clone (커밋 주소)를 입력하면 해결됩니다.
위 작업이 끝나면 아래와 같이 새로운 ‘프로젝트 디렉토리’가 생성됩니다.
리모트 레포지토리를 가져온다고 해서 ‘.git’폴더만 올 것이라고 생각할 수 있는데,
‘프로젝트 디렉토리’의 형태로 전달받는 것이 특징입니다!

다음 포스팅은 커밋에 대해 더욱 자세하게 살펴 보겠습니다.
감사합니다!
Git에 관한 게시물은 CodeIt의 강의 내용을 정리한 글입니다. 강의 이미지나 내용 자체를 업로드하지는 않습니다!!