GitHub
- Git repository를 위한 호스팅 플랫폼
- Git을 사용하는 프로젝트를 위한 호스팅 서비스
- GitHub을 사용하여 로컬 프로젝트 repository를 원격 클라우드 기반 GitHub 저장소에 업로드 할 수 있고, public repository 들을 통해 다른 개발자들과 교류할 수도 있다.
Git
- 버전 관리 시스템으로, 시간이 지남에 따라 파일의 변경 사항을 추적하는 도구
Using GitHub
- Common Workflow: 내 로컬 Repository를 GitHub 에 push 하기
- 로컬에서 add / commit 한다.
- Github 으로 이동 후 새 repository를 생성한다.
- 나의 로컬 repository 를 GitHub repository 와 연결한다. (remote 추가)
- 새 remote 를 이용하여 코드를 Push 한다.
- github.com 이동
- repository 생성
- repository 에 코드 push 하기
git remote add origin https://github.com/<your-username>/<your-repo-name>.git git push -u origin master
- repository 에 변경사항 남기기
- 변경사항 push -> GitHub repo 업데이트
console.log("안녕하세요, 위코더 여러분!");
- 저장 후 커밋을 위해 add 후 커밋메세지를 남기기
git add . git commit -m "Change greeting"
- 업데이트 된 로컬 repo를 GitHub repo로 push
git push origin master
Using GitHub 2
- repository 클론
GitHub repo 를 먼저 생성한 뒤 clone 을 받아 내 로컬환경에 다운로드 후 프로젝트를 시작하는 방법
- GitHub repo 를 생성
repository 를 clone 하기 위해서 'Clone or download' 라는 초록색 버튼을 누른 뒤 아래 복사 아이콘을 클릭
(repository 주소를 복사)- 해당 remote repository 를 내 컴퓨터로 받아오기 위해, 해당 repo 를 다운로드 받고 싶은 경로로 이동한 뒤 git clone 명령어에 방금 복사해준 URL 을 붙여주고 실행
git clone <github-repo-link>
이렇게 하면 해당 경로에 clone 받은 GitHub repository 의 이름을 그대로 딴 폴더가 생성되고 cd 명령어를 사용해 해당 폴더로 이동하면, clone 시점에 remote repository에 존재했던 모든 폴더 및 파일들이 그대로 복제되어 있는것을 확인할 수 있다.
다른 개발자들의 public repository 를 클론받아 작업할 수도 있다.
Branching and merging
- 테스트를 아직 해보지 않았거나, 새로 추가한 기능을 GitHub repo 에 push 하고 싶다면?
-> Branch- 브랜치를 사용해서 현재 프로젝트의 코드를 그대로 복제하여 작업 환경을 만들 수 있다.
- master 브랜치를 건드릴 필요없이 작업환경에서 기능을 추가하거나 테스트를 진행
- 나중에 전부 완료가 되면, master 브랜치와 merge (병합)
GitHub 에 브랜치 push 하기
- 예를 들어, 전에 생성 한 hello-wecoders 프로젝트에 새로운 파일을 추가하고 싶다면, 우선 아래 명령어를 통해 새로운 브랜치를 생성하고 이동해야한다.
git checkout -b feature/greetings <feature/greetings> 부분 원하는 브랜치 이름으로 대체
- example.js 라는 파일을 만들고, 아래 코드를 삽입
console.log("Hello Wecoders!");
- 커밋 절차를 거쳐 변경사항을 커밋
git add . git commit -m "Add: greetings"
- push를 통해 feature/greetings 브랜치를 remote 로 올린다.
git push origin feature/greetings
-> GitHub repository 에 내가 방금 push 한 branch가 추가되는 것을 확인
Pull Request (PR) 생성
- 프로젝트 오너 (혹은 팀 리더) 에게 내가 작업한 브랜치의 작업내용을 master 브랜치에 반영해달라는 요청을 보낼 수 있다.
- Pull Request 에서는 해당 repository 를 열람할 수 있는 권한이 있는 개발자들이 작업내용에 대한 리뷰를 해주거나, 변경 사항을 확인할 수 있다. (master 브랜치로 합쳐지기 전에 확인해야하기 때문에)
- 해당 링크를 클릭하면, Pull Request 를 생성할 수 있는 페이지로 이동 / 해당 PR의 제목과 어떤 내용을 담고 있는지 설명하는 Description을 작성할 수 있다.
- 작성을 완료했다면, 하단에 'Create pull request' 버튼을 눌러 마무리
- 이때부터는 함께 협업하는 개발자들이 방금 만든 PR을 리뷰, 분석하고 댓글까지 달아줄 수 있다.
- 모든 리뷰 내용이 반영된 후 master 브랜치와 충돌이 발생하지 않았다면, 해당 PR은 master 브랜치로 merge 될 준비가 끝났다.
Conflicts (충돌)
- merge 하기 전 conflicts (충돌) 가 발생할 수도 있다.
- 충돌은 어떤 파일의 변경사항이 기준이 되는 master 브랜치의 파일과 겹쳐, Git 에서 어떤 버전의 코드를 선택해야하는지 모를 때 발생한다.
- 이런 상황에서는, 개발자가 직접 코드를 비교해 충돌을 해결하고 merge 를 마무리 해야한다.
GitHub 으로부터 변경사항 pull 하기
- Pull Request 를 통해 master 브랜치를 업데이트했다면, 이제 로컬 repository 는 GitHub 에 있는 master 와 서로 다른 내용을 가지고 있게 된다.
- 이 때 git pull 명령어를 통해 remote 의 최신화된 코드를 내 로컬 repo 에 반영할 수 있다.
- 여기서 GitHub remote repo 링크에 origin 이라는 이름을 붙여줬었기 때문에 아래 명령어를 통해 GitHub repo 의 master 브랜치 내용을 받아올 수 있다.
git pull origin master
마무리