저번 git에 이어 이번에는 git을 이용하여 온라인에서 협업하는 법에 대해 알아보겠다. 여기서 Github이 등장한다.
Github?
- 대표적인 Git 저장소다. 다른 저장소로는 Bitbucket, Gitlab등이 있다.
- 코드를 올려놓는 클라우드와 같은 것이다.
- 오픈소스 프로젝트들이 굉장히 많다.
Github을 해야하는 이유?
- 코드를 안전하게 보관할 수 있다.
- 편하게 협업할 수 있다.
- 세계에 퍼져있는 고수들의 코드를 살펴볼 수 있다.
기본적인 Github 사용법
-
local repository 만들기
-
컴퓨터에서 폴더를 하나 생성한다.
-
터미널을 통해 만들어놓은 폴더로 가서
git init
을 입력한다. -
폴더에서 필요한 작업을 한 후
git commit -m '[커밋 메시지]'
를 입력한다.
-
-
Github 계정 생성하기
-
깃헙 사이트에 접속한다. 계정이 없다면 생성하고, 이메일 인증까지 해준다.
-
-
Github에서 remote repository 생성하기
-
새로운 repository를 만들어준다. 이 곳에 git으로 관리되는 폴더가 원격으로 저장되는 것이다.
-
왼쪽 상단에 보면
New
가 있다. 클릭해준다. -
다음과 같은 화면이 뜨면 아래 설명 참고해서 빈칸 채워주고
Create repository
를 눌러준다.- Repository name : 원하는 레포지토리 이름
- Description : 레포지토리에 대한 설명. 안적어도 된다.
- Public/Private : public으로 설정하면 모두가 볼 수 있게 되지만 private으로 한다면 외부에 공개되지 않는다.
- README : 체크하면 간단한 README파일이 생성되는데, 선택사항이다.
-
-
Github에서 만든 repository를 local repository와 연결하기
-
remote repository를 만들면 다음 창이 뜬다.
-
위 창에서 …or push an existing repository부분 첫번째 줄을 복사하여 터미널로 가서 붙여넣는다.
git remote add origin https://github.com/[user명]/[remote repository명].git
- origin이라는 이름으로 원격저장소를 설정하겠다는 의미다.
- origin이라는 이름으로 원격저장소를 설정하겠다는 의미다.
-
-
로컬 폴더에서 remote repository 확인하기
-
git remote
로 현 폴더의 원격 레포지토리를 확인해준다. -
정상적으로 등록되어있다면 원격 레포지토리 이름이 뜰 것이다. ex) origin
-
-
remote repository에 push하기
-
그 다음 줄을 복사하여 터미널에서 붙여넣는다.
git push -u origin master
- 폴더의 현 브랜치에 커밋된 내용들을 origin이라는 이름의 원격 레포지토리에 master이란 이름을 가진 브랜치에 올리겠다는 의미다.
- 폴더의 현 브랜치에 커밋된 내용들을 origin이라는 이름의 원격 레포지토리에 master이란 이름을 가진 브랜치에 올리겠다는 의미다.
-
컴퓨터에서 처음 사용하는 계정이라면 로그인 창이 뜰 것이다. 깃헙 아이디를 넣고 비밀번호를 넣어준다.
-
-
깃헙 레포지토리 확인하기
- 정상적으로 push되었다면, 로컬에 있던 파일들이 깃헙 레포지토리에 그대로 등록되었을 것이다.
사용하지 않을 파일 설정하기
코드를 짜다보면 github에는 올릴 필요가 없거나 올려서는 안되는 파일이 있을 수 있다.
이럴때 사용할 수 있는 것이 .gitignore
파일이다.
-
.gitigniore 사용하기
-
폴더의 최상위 공간에
.gitignore
이라는 이름의 파일을 생성한다. 기본적으로 숨김파일로 지정된다. -
여기를 참고해서 파일, 폴더 등등을 ignore파일 안에 적어준다.
-
처음 Github의 코드를 받아오기
-
github 레포지토리에 들어가서
Clone or download
를 누르고 클립보드 복사 버튼을 눌러준다. -
터미널에서 코드를 받아올 폴더로 가서
git clone [붙여넣기]
해준다.- 이러면 프로젝트의 내역까지 그대로 받아와진다.
git log
를 통해 확인할 수 있다.
- 이러면 프로젝트의 내역까지 그대로 받아와진다.
업데이트된 Github의 코드를 반영하기
-
원격 레포지토리의 내용을 불러오기
git fetch
- fetch를 한다고 바로 동기화되는 것은 아니다.
- fetch를 한다고 바로 동기화되는 것은 아니다.
-
원격 레포지토리와 동기화하기
git pull [remote repository 이름] [branch 이름]
-
pull까지 해주면 파일이나 커밋 내용이 동기화된다.
-
협업을 할 때는 코드를 push하기 전에 pull을 먼저 해서 최신 버전의 코드를 반영해서 push하는 것이 좋다.
-
원격 레포지토리에 브랜치 등록하기
-
먼저 브랜치를 만들고 해당 브랜치로 넘어간다.
git checkout -b [브랜치 이름]
- 위 명령어로 브랜치 생성과 checkout을 한번에 할 수 있다.
-
Github에 브랜치 올리기
git push [원격 레포지토리 이름] [올릴 브랜치 이름]
-
Github상에서 확인하기
-
깃헙 repository 왼쪽 Branch를 눌러보면 다음과 같이 branch가 생긴 것을 볼 수 있다.
-
branch를 누르면 해당 branch에 저장된 파일이 나타난다.
-
원격 레포지토리의 브랜치를 받아오기
-
원격 레포지토리의 상태를 받아오기
git fetch
-
원격 레포지토리에 어떤 브랜치가 있는지 확인하기
git branch -a
- 로컬과 원격의 브랜치를 한번에 볼 수 있다.
-
새로운 브랜치를 만듦과 동시에 원격의 브랜치를 들고오기
git checkout -b [로컬에 만들 브랜치 이름] [원격 레포지토리 이름]/[원격에서 들고올 브랜치 이름]
- 뭔가 복잡해보이지만 사실 간단하다. 아까 했던 것 뒤에 원격 정보만 붙인 것이다.
원격 브랜치 삭제하기
```terminal
git push -d [원격 이름] [삭제할 브랜치 이름]
```
충돌(conflict) 대비하기
- 충돌이 일어나는 경우
- 브랜치간의 충돌 : 마스터에서 브랜치를 merge해올 때 같은 파일, 같은 줄에 코드가 겹치는 경우
- 사용자간의 충돌 : 다른 사람이 작업한걸 pull하지 않고 push해서 같은 파일, 같은 줄에 코드가 겹치는 경우
-
브랜치간의 충돌은 충돌이 일어난 부분에서 선택적으로 코드를 고르고 다시 add, commit 하면 됐다.
-
사용자간의 충돌도 마찬가지다. pull한 뒤 양쪽 작업에서 겹치는 부분에서 코드를 선택하여 필요없는 부분은 지우고 commit하고 push한다.
- 이때, Head부분이 내 코드다.