git

#30 깃(Git) - 깃허브로 협업하기 2 : 협업 작업 환경 구성하고 실습하기

에이블디 2021. 12. 22. 20:01

안녕하세요! 에이블디입니다!

 

이번 시간에는 지난 시간에 이어서 컴퓨터에 협업을 위한 작업 환경을 구성하고 간단한 실습을 하려고 합니다.

 

지난 시간에 깃허브 리포지토리에 공동 작업자를 추가한 것 기억나시죠?

예를 들어 공동작업자에 팀장과 팀원 두 명이 있다고 가정하면, 팀장과 팀원 1, 팀원 2가 번갈아 커밋을 올리거나 내려받으면서 작업할 수 있습니다.

 

오늘 실습은 두대 이상의 컴퓨터에서 하나의 깃허브에 접속하는 것이기 때문에 두대의 컴퓨터가 준비가 되지 않는 환경이라면 글을 읽고 이해하시면 되겠습니다!

 

먼저 각 작업자의 컴퓨터에 로컬 리포지토리(지역 저장소)를 만들어야 합니다.

그리고 공동 작업에서 사용할 이름과 이메일 주소를 지정합니다.

리포지토리(저장소)마다 다른 이름이나 메일 주소를 사용하기 위해 git config 명령을 사용할 때 --global 옵션을 빼고 이름과 메일 주소를 작성하도록 하겠습니다.

아래 명령은 로컬 리포지토리 이름을 abled-team으로 했을 때입니다.

$ cd ~
$ git init abled-team
$ cd abled-team
$ git config user.name "사용자 이름"
$ git config user.email 메일주소

공동작업자 이름과 이메일 주소까지 다 지정했으면 깃허브 리포지토리에 첫 커밋과 푸시를 해볼게요!

지금 파일을 만들고 첫 커밋과 푸시를 하는 사람을 Jayden이라고 가정하겠습니다.

git-study.txt라는 문서 파일을 만들고 아무 내용이나 작성 한 뒤 저장해 주시고 "create git-study.txt"라는 커밋 메시지와 함께 커밋합니다.

$ vi git-study.txt
$ git add git-study.txt
$ git commit -m "create git-study.txt"

전 텍스트 파일에 "hi YAMA!!!"라고 작성하였습니다.

커밋까지 잘 되었네요!

 

로컬 리포지토리(지역 저장소)의 커밋을 깃허브 리포지토리(원격 저장소)에 푸시하려면 먼저 깃허브 리포지토리의 주소를 복사해 주세요!

그리고 터미널 창에서 깃의 origin에 복사한 주소를 지정합니다.

위 이미지의 빨간 박스 안의 버튼을 눌러 주소를 복사해 주세요!

 

그다음 git push 명령을 사용해 origin의 master 브랜치에 커밋을 올립니다.

이때 아래의 명령어와 같이 -u 옵션을 붙이면 다음부터 git push 명령만으로 깃허브 리포지토리의 master 브랜치에 커밋을 올릴 수 있습니다.

$ git remote add origin 복사한 깃허브 리포지토리 주소
$ git push -u origin master

푸시까지 잘 되었네요!

깃허브 리포지토리를 확인하면 방금 Jayden이 올린 git-study.txt 문서의 커밋이 올라와 있는 걸 볼 수 있습니다.

그림으로 표현하면 다음과 같습니다.

그럼 이번엔 YAMA의 입장에서 작업을 해보도록 하죠!

깃허브로 협업할 때 공동 작업자는 자신의 작업을 진행하기 전에 git clone 명령을 사용해서 원격 저장소를 클론(복제)합니다.

$git clone 원격 저장소 주소

푸시가 한 번이라도 이루어졌다면 위 이미지처럼 "code"라는 버튼을 누르시면 나타나는 클론 탭에 빨간 박스 안의 버튼을 클릭하셔서 주소를 복사해 주세요!

 

YAMA의 컴퓨터에 클론이 잘 이루어졌네요!

 

현재 상황을  이미지로 표현하면 다음과 같습니다.

야마의 컴퓨터에 프로젝트를 클론 했으니 야마의 컴퓨터에서도 작업해 봐야겠죠?

 

여기서 주의할 점이 있습니다!

깃허브에서 협업할 때는 여러 사람이 함께 파일을 수정하고 푸시하기 때문에 반드시 작업하기 전에 깃허브 리포지토리의 최신 커밋을 풀한 다음 자신의 커밋을 푸시해야 합니다.

 

왜 그런지 한번 살펴볼까요?

모든 팀원이 깃허브 리포지토리를 클론 한 다음 팀장이 git-study.txt를 수정해서 'update git-study.txt'라는 커밋 메시지와 함께 커밋하고 푸시했다고 가정해 보겠습니다.

즉 팀원들이 깃허브 리포지토리를 클론 한 뒤 깃허브 리포지토리에 새로운 커밋이 올라온 상태인 것입니다.

 

제이든이 git-study.txt에 아무 내용이나 추가하고 저장한 뒤 커밋하고 푸시까지 한 상황을 재현해 볼게요.

$ vi git-study.txt
$ git commit -am "update git-study.txt"

저는 "hi INI-K, Miro!!!"를 추가하고 저장해줬습니다!

 

커밋까지 잘 되었네요!

그럼 푸시를 해 볼까요?

$ git push -u origin master

푸시까지 잘 되었습니다!

 

그럼 다시, 야마의 컴퓨터로 와보죠!

제이든이 새 커밋을 만들어 깃허브 리포지토리에 푸시하는 동안 YAMA가 YAMA의 컴퓨터에서 다른 커밋을 푸시한다고 가정해 보겠습니다.

야마의 컴퓨터에서 'yama.txt' 문서를 만들어 내용을 작성하고 저장한 후 커밋을 만듭니다.

텍스트 내용은 아무 내용이나 작성하세요.

$ vi yama.txt
$ git add yama.txt
$ git commit -m "create yama.txt"

YAMA는 "hello Jayden!"을 입력해 주었네요.

커밋도 잘 이루어졌습니다!

 

그럼 이제 YAMA가 생성한 커밋을 깃허브 리포지토리에 푸시하겠습니다.

YAMA도 깃허브 리포지토리로 커밋은 처음이니 처음에 remote add origin 명령을 사용해 주었습니다.

$ git remote add origin https://github.com/abledcorp/teamproject.git
$ git push -u origin master

그런데 ! [rejected]라고 시작하는 오류 메시지가 뜨네요?!

이것은 깃허브 리포지토리에 있는 최신 커밋 정보가 YAMA의 컴퓨터에 저장되어 있지 않기 때문에 나타난 것입니다.

이런 오류가 생기지 않게 하려면 자신의 커밋을 푸시하기 전에 깃허브 리포지토리의 최신 커밋을 가져와야 합니다.

 

깃허브 리포지토리에 있는 최신 커밋을 가져오기 위해 git pull 명령을 사용할게요.

첫 원격 풀이니 로컬 브랜치가 리모트 브랜치를 추적하게 해 주기 위해 깃허브 리포지토리 주소 뒤에 옵션을 붙여줍시다.

$ git pull 깃허브 리포지토리 주소 master master --allow-unrelated-histories

그럼 위의 이미지처럼 텍스트 텍스트 파일이 자동으로 실행되면서 커밋 메시지가 표시됩니다.

수정을 하셔도 되고 그대로 사용해도 됩니다.

저는 그대로 사용하겠습니다! 메시지를 정하고 텍스트 편집기를 종료해주세요!

 

풀이 잘 되었네요!

 

깃 리포지토리에서 최신 커밋 정보를 가져왔으므로 이제 YAMA가 만들었던 커밋을 푸시할 수 있습니다.

$ git push -u origin master

푸시가 잘 된 것을 확인할 수 있습니다!

 

깃허브에서도 확인해 볼까요?

YAMA가 작업한 yama.txt 파일이 잘 올라와 있네요!

 

이렇게 깃허브에서 협업할 때는 깃허브 리포지토리의 최신 커밋 정보를 가져온 다음 로컬 리포지토리의 커밋을 올려야 한다는 점 꼭 기억해주세요!

 

그래서 협업을 할 때 아래의 이미지처럼 깃허브에 푸시를 한 사람이 팀원들에게 알려주어서 팀원들이 풀을 받을 수 있게 해 주는 것도 좋습니다!

 

이번 시간에는 깃허브로 협업을 하는 실습을 해 보았습니다!

다음 시간에 조금 더 깃허브로 협업을 하는 법을 알아보도록 할게요!

 

그럼 여러분 다음 시간에 만나요!