-
[GitHub] 협업의 기본 알아보기Git&GitHub/GitHub 사용방법 2022. 5. 18. 15:30728x90
깃허브의 원격 저장소를 사용해 협업할 때 가장 기본으로 사용되는 방법을 알아보겠습니다.
하나의 작업을 여러 사용자가 협업하기 위해서는 각자 지역 저장소에서 작업한 내용을 자유롭게 원격 저장소에서 공유할 수 있어야합니다. 여기에서는 사용자가 총 세 명이라고 가정하겠습니다.
(컴퓨터가 하나 뿐이고 계정도 하나뿐인 관계로 텍스트로 대부분 서술될 것입니다.)
<공동 작업자 추가하기>
깃허브의 공개 저장소는 주소만 알면 누구든지 접속해서 올라와 있는 소스를 살펴볼 수 있습니다. 또 깃허브 회원이라면 누구나 오픈 소스 프로젝트의 소스를 내려받을수도 있습니다. 하지만 누구나 저장소에 커밋을 푸시할 수는 없습니다. 공개 저장소든 비공개 저장소든 여러 사람이 협업한다면 승인된 공동 작업자에게만 커밋을 올릴 수 있는 권한을 주어야합니다. 그래야 프로젝트 소스가 무분별하게 수정되는 일을 막을 수 있기 때문입니다.
여기에서는 '팀장'과 '팀원1', '팀원2' 이렇게 세 사람이 깃허브를 통해 협업한다고 상상해보겠습니다. 팀 작업을 하려면 팀원 중 누군가 원격 저장소를 만들고 나머지 팀원들을 공동 작업자로 추가해야 합니다. 여기에서는 팀장이 manuals라는 저장소를 만들었다고 가정해보겠습니다. 팀장은 manuals 저장소 화면에서 [Setting]을 누른 후, [Manage Access]를 선택합니다.
그 후에 오른쪽 필드의 [Invite a collarborator]를 클릭합니다. 그 후 나타나는 오른쪽 텍스트 필드에 팀원1과 팀원2의 깃허브 아이디나 메일 주소를 입력한 후 [select a collarborator above]를 누릅니다.
팀원은 협업자로 초대됐다는 메일과 깃허브 메시지를 받게 되는데 깃허브 메시지 화면에서 [Accept Invitation]을 누르면 초대가 수락됩니다.
공동 작업자들이 초대를 수락하기 전에는 화면에 pending invite라고 뜹니다.
<작업 환경 구성하기>
원격 저장소에 공동 작업자가 모두 추가되었다면 팀장과 팀원1, 팀원2가 번갈아 커밋을 올리거나 내려받으면서 작업할 수 있습니다. 이 작업은 둘 이상의 컴퓨터에서 하나의 깃허브에 접속하는 것이기 때문에 이후의 실습은 두대의 서로 다른 컴퓨터에서 진행해야 합니다. (아니면 다른 사람을 구해서 같이 해보시는 것도 좋은 방법입니다.) 준비가 어려운 분들은 눈으로 읽고 넘어가주세요.
먼저 각 작업자의 컴퓨터에 지역저장소를 만들어야합니다. 그리고 공동 작업에서 사용할 이름과 이메일 주소를 지정합니다. 저장소마다 다른 이름과 메일 주소를 사용하기 위해 git config 명령을 사용할 때 --global 옵션을 빼고 이름과 메일 주소를 지정하겠습니다. 아래 명령은 지역 저장소 명령을 manuals로 했을 때입니다.
$ git init manuals
$ cd manuals
$ git config user.name "사용자 이름"
$ git config user.email 메일주소
팀장뿐만 아니라 공동 작업자 모두 같은 방식으로 지역 저장소와 기본 사용자 환경을 지정합니다. 아래 그림은 팀장의 환경을 설정한 것입니다.
<원격 저장소에 첫 커밋 푸시하기>
우선 팀장이 overview.txt라는 문서를 만들고 커밋한 후 원격 저장소의 master 브랜치로 푸시하는 과정을 살펴보겠습니다. 원격 저장소에서 처음올라가는 커밋이라면 앞에서 공부했던 것처럼 간단히 올릴 수 있습니다.
1. 빔을 사용해 overview.txt 문서를 작성합ㄴ디ㅏ. 문서의 내용은 어떤 것이든 상관없습니다. overview.txt 문서를 스테이지에 올리고 'overview'라는 메시지와 함께 커밋합니다.
$ vi overview.txt
$ git add overview.txt
$ git commit -m "overview"
2. 지역 저장소의 커밋을 원격 저장소에 푸시하려면 먼저 원격 저장소 주소를 복사합니다. 그리고 터미널 창에서 깃의 origin에 복사한 주소를 지정합니다. 그다음 git push 명령을 사용해 origin의 master 브랜치에 커밋을 올립니다. 이때 다음과 같이 -u 옵션을 붙이면 다음부터 git push 명령만으로 원격 저장소의 master 브랜치에 커밋을 올릴 수 있습니다.
$ git remote add origin 복사한 저장소 주조
$ git push -u origin master
3. 깃허브의 원격 저장소를 확인하면 팀장이 올린 overview.txt 문서의 최종 커밋이 올라와 있을 것입니다.
<공동 작업자 컴퓨터에 원격 저장소 복제하기>
원격 저장소에서 협업할 때 공동 작업자는 자신의 작업을 진행하기 전에 git clone 명령을 사용해서 원격 저장소를 복제(clone)합니다.
$ git clone 원격저장소 주소
<첫번째 커밋이 아니라면 풀 먼저하기>
깃허브에서 협업할 때는 여러 사람이 함께 문서를 수정하고 푸시하기 때문에 반드시 작업하기 전에 원격 저장소의 최신 커밋을 풀한 다음 자신의 커밋을 푸시해야합니다.
1. 팀원 모두가 원격 저장소를 복제한 다음 팀장이 overview.txt를 수정해서 'update overview'라는 메시지와 함께 커밋하고 푸시했다고 가정해보겠습니다. 즉 팀원 1과 팀원 2가 저장소를 복제한 뒤 원격 저장소에 새로운 커밋이 올라온 것입니다.
$ vi overview.txt
$ git commit -am "update overview"
2. 팀장이 새 커밋을 만들어 원격 저장소에 푸시하는 동안 팀원 1이 다른 컴퓨터에서 다른 커밋을 푸시한다고 가정해 보겠스빈다. 팀원 1의 컴퓨터에서 'apple.txt' 문서를 작성한 후 커밋을 만듭니다. 텍스트는 아무 내용이나 작성하세요
$ vi apple.txt
$ git add apple.txt
$ git commit -m "apple"
3. 팀원 1이 작성한 커밋을 원격 저장소에 푸시합니다.
$ git push -u origin master
4. 그런데 예상하지 못한 오류가 표시됩니다. ![rejected] 라고 시작하는 오류메시지는 원격 저장소에 있는 최신 커밋 정보가 팀원 1의 컴퓨터에 저장되어 있지 않기 때문에 나타난 것입니다. 이런 오류가 생기지 않게 하려면 자신의 커밋을 푸시하기 전에 원격 저장소의 최신 커밋을 가져와야 합니다.
5. 원격 저장소에 있는 최신 커밋을 가져오기 위해 git pull 명령을 사용합니다.
$ git pull
6. 자동으로 빔이 실행되면서 커밋 메시지가 표시됩ㄴ디ㅏ. 원하는 내용을 추가해도 되고 기본 메시지를 사용해도 됩니다. 메시지를 정하고 편집기를 종료합니다.
7. 원격 저장소에서 최신 커밋 정보를 가져왔으므로 이제 팀원 1이 만들었던 커밋을 푸시할 수 있습니다. 원격 저장소에서 협업할 때는 이렇게 원격 저장소의 최신 커밋 정보를 가져온 다음 지역 저장소의 커밋을 올려야 한다는 점을 꼭 기억해두세요
$ git push -u origin master
728x90'Git&GitHub > GitHub 사용방법' 카테고리의 다른 글
[GitHub] 협업에서 브랜치 사용하기 (0) 2022.05.18 [GitHub] 지역 저장소를 원격저장소에 연결하기 (0) 2022.05.18 깃허브에 프로젝트파일 올리기 Visual Studio Code (0) 2022.05.18 깃허브에 프로젝트파일 올리기 Eclipse (0) 2022.05.14