깃허브 사용법(feat. 협업)

JangWooSeok·2023년 2월 8일
1
post-custom-banner

📗 간략한 설명

Git이란 독립적인 공간에서 코드를 기록하고 관리하며 버전 관리할 수 있게 하는 분산 버전 관리시스템이다.

Github는 이러한 Git의 단점을 보완하여 팀 단위 협업을 할 수 있게 도와주는 웹호스팅 서비스이다. 깃허브를 사용해서 협업을 해보자!

⚙️ 간단한 설정

먼저 git bash를 열고 로컬에서 기본값으로 사용할 Git 사용자 이름과 이메일을 설정한다.

$ git config --global user.name "Wooseok Jang"
$ git config --global user.email "wowseok2774@gmail.com"

정상적으로 입력하였다면 git config --list 명령어를 이용해 마지막 하단에 사용자 이름과 이메일이 정상적으로 들어갔는지 확인한다.

$ git config --list

필자는 아래와 같이 나왔다.

🍴😅 fork

깃허브에서 협업을 진행할 때 fork를 사용한다. fork는 다른 사람의 repository를 나의 repository로 복사하는 것이다.

여기서 중요한 점이 있다. fork한 레포지토리를 git clone하는 것이 아니라, fork를 진행하면 나의 깃허브 레포지토리에 새로운 레포지토리가 생성되는데 그것을 clone 해야 한다. 그리고 clone한 repository에서 기능을 완성한 뒤 Pull request를 통해 기존 소유자의 repository에 기여하는 것이다.

정리하면 fork한 repository와 나의 깃허브 repository에 존재하는 레포지토리는 각각 upstream, origin관계이며 local에서 origin으로 push-> origin에서 upstream으로 push(Pull Request)하는 프로세스를 거치면서 fork한 레포에 기여할 수 있다.

현재 연결된 원격 레포를 확인하는 명령어는 다음과 같다.

$ git remote -v

그리고 원본 소유자의 repo를 upstream으로 연결한다.

$ git remote add upstream (fork한 repo 주소)

이 작업까지 완료하였다면 다시 한번 git remote -v 명령어로 확인하여 upstream과 origin이 잘 등록되어있는지 확인할 수 있다.

📄 clone

fork를 진행하고 나의 레포지토리에서 Code버튼을 클릭하자 HTTPS 방식의 Git 저장소 주소를 복사하여 git clone을 진행한다. 명령어는 다음과 같으며 .git으로 끝나는 Git 저장소 주소를 입력하고, DIR부분에는 자신이 지정하고 싶은 폴더 이름을 넣으면 된다.

$ git clone [REPO_URL] [DIR] 

필자는 my_repo라는 폴더에 저장소를 생성했다. 다음 사진과 같이 기존 소유자의 생성된 폴더와 파일이 존재한다.

이제 나의 local에 wooseok이라는 폴더를 만들고 그 폴더는 안에 'hello.py'라는 파일을 가졌다. 이 폴더를 add, commit, push를 진행해보겠다.

$ git add wooseok 
$ git commit -m "first commit" 

어? 그런데 안된다...
???

error: src refspec master does not match any라는 오류가 뜨면서 push가 되지않았다. 알아보니 Github branch 정책 변화로 default 값이 main으로 바뀌었단다.ㅋ

git push origin master라는 명령어를 습관적으로 사용한 나는 master라는 것을 왜쓰는지도 모른 체 사용했지만 origin이라는 원격저장소의 master 브랜치로 push하겠다는 말이었다... main으로 바뀌었다니 main으로 해주자 ^^

git push origin main

📃 Pull Request

push가 완료되었다면 나의 fork 저장소화면으로 이동하여 Pull request탭을 누르고 New pull request버튼을 클릭한다.

그리고 Create pull request버튼을 클릭하면 원본 저장소(원래의 소유자)에서 내가 요청한 Pull request가 올라가게 된다. 원본 저장소 관리자는 나의 요청을 확인하고 merge 여부를 판별한 뒤 나의 수정내역을 반영해줄 것이다.

나의 Pull request가 반영되면 내가 fork해온 저장소에 원본 저장소(원래의 소유자)의 main 브랜치보다 커밋이 하나 뒤쳐졌다고 나온다. 이 경우 upstream 저장소의 내용을 pull 하고 나의 origin에 push해주면 된다. 코드로 살펴보자.

git pull upstream main
git push origin main

마침내 정상적으로 두 저장소를 일치시킬 수 있었다.

🔎 참고

출처: https://pers0n4.io/github-remote-repository-and-upstream/,
https://junghn.tistory.com/entry/Git-git-%EC%9D%B4%EB%9E%80-%EC%9B%90%EA%B2%A9-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%99%80-%EB%A1%9C%EC%BB%AC-%EC%A0%80%EC%9E%A5%EC%86%8C

post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 2월 8일

훌륭하고, 아름다운블로그

답글 달기