GitHub 연동

백승진·2020년 11월 4일
0

GIT

목록 보기
3/3

GitHub는 git remote repository와 GUI 기능을 제공하는 Hosting service로 많은 Open source들이 이곳에서 관리된다. 이번시간에는 GitHub에 대한 기본 사용법을 알아보겠다

What you will learn?

  1. GitHub 저장소를 local로 가져오기.
  2. local에서 작업용 branch 생성 및 branch에 작업한 기록 add/commit.
  3. branch 작업내용을 GitHub로 pull Request 하기.
  4. GitHub의 Master를 local로 pull 하기.
  5. master branch를 작업 branch에 병합하기.

1. GitHub 저장소를 local로 가져오기.

remote저장소의 데이터를 local로 가져오려면 가져오고자 하는 경로에서 아래 명령을 실행한다.

git clone [URL]

URL은 GitHub 사이트에 있는 remote repository의 URL 을 입력하면 되며 보통 다음과 같은 방식으로 copy해 온다.

clone이 성공하면 위 그림과 같은 구조시 westargram-backend라는 폴더가 생성되고 그 밑에 .git을 포함, 원격저장소에서 관리하는 file과 folder가 위치하게 된다.

2. local에서 작업용 branch 생성 및 branch에 작업한 기록 add/commit.

일반적으로 하나의 저장소는 팀원들이 같이 사용한다. 개인이 작업한 내용을 검증없이 master로 반영(숨겨진 Error가 있거나)하면 이를 가져다 쓰는 팀원들이 Error가 있는 소스를 가져가는 문제가 생기게 되므로 별도의 branch(feature/이름)를 생성해서 작업하는 것을 권장한다.

git branch [branch 이름]

branch 상에서 작업한 내용(신규 파일 추가 또는 기존 파일 수정)을 "git add [target]"명령으로 변경요인들을 staging area로 보낸 후 "git commit"을 통해 local 저장소의 작업 branch에 반영한다.

3. branch 작업내용을 GitHub로 pull Request 하기.

local 저장소의 데이터를 remote 에 반영하려면 push 후 pull request를 해야 한다.

git push origin [branch이름]
git request-pull [version] [remote url] 

push는 local 저장소의 기록을 remote로 보낼때 사용하는 명령이며 "origin"은 remote name으로 clone으로 저장소를 Clone 하면 origin이라는 리모트 저장소가 자동으로 등록된다. 그리고 push할 branch이름을 추가하여 실행 후 remote 측에 pull request요청을 한다. 그러면 remote 저장소의 관리자가 merge여부를 처리한다.
(GitHub에서 pull request 기능을 제공, GitHub를 사용한다면 CLI 환경에서 요청할 필요는 없다.)

4. GitHub의 Master를 local로 pull 하기.

remote 저장소는 팀원들의 요청에 따라 수시로 merge를 통해 상태가 변경된다. 팀원들은 local에서 작업할 때 master를 가능한 최신화하도록 신경써야 할 필요가 있으므로 pull을 자주 하는 것이 좋다. 주의할 것은 master를 pull할때는 local에서 master branch check out 상태에서 해야 한다.

git pull origin master

5. master branch를 작업 branch에 병합하기.

master branch를 remote로부터 pull하여 추가된 변경사항을 본인이 작업중인 branch에 반영하기 위해 merge를 해야 한다. 본인의 작업 branch로 checkout 후 아래와 같이 merge를 진행

gir merge master

정상적으로 merge되면 다른 사람이 remote 저장소에 추가한 신규 파일 또는 수정된 내용이 작업 branch에 반영된다

profile
12년 .NET 개발 경력을 가진 웹 초짜 개발자입니다 :)

0개의 댓글