저번 git에 이어 이번에는 git을 이용하여 온라인에서 협업하는 법에 대해 알아보겠다. 여기서 Github이 등장한다.

Github?

  • 대표적인 Git 저장소다. 다른 저장소로는 Bitbucket, Gitlab등이 있다.
  • 코드를 올려놓는 클라우드와 같은 것이다.
  • 오픈소스 프로젝트들이 굉장히 많다.

Github을 해야하는 이유?

  1. 코드를 안전하게 보관할 수 있다.
  2. 편하게 협업할 수 있다.
  3. 세계에 퍼져있는 고수들의 코드를 살펴볼 수 있다.

기본적인 Github 사용법

  1. local repository 만들기

    • 컴퓨터에서 폴더를 하나 생성한다.

    • 터미널을 통해 만들어놓은 폴더로 가서 git init을 입력한다.

    • 폴더에서 필요한 작업을 한 후 git commit -m '[커밋 메시지]'를 입력한다.

  2. Github 계정 생성하기

    • 깃헙 사이트에 접속한다. 계정이 없다면 생성하고, 이메일 인증까지 해준다.

  3. Github에서 remote repository 생성하기

    • 새로운 repository를 만들어준다. 이 곳에 git으로 관리되는 폴더가 원격으로 저장되는 것이다.

    • 왼쪽 상단에 보면 New가 있다. 클릭해준다.

    • 다음과 같은 화면이 뜨면 아래 설명 참고해서 빈칸 채워주고 Create repository를 눌러준다.

      • Repository name : 원하는 레포지토리 이름
      • Description : 레포지토리에 대한 설명. 안적어도 된다.
      • Public/Private : public으로 설정하면 모두가 볼 수 있게 되지만 private으로 한다면 외부에 공개되지 않는다.
      • README : 체크하면 간단한 README파일이 생성되는데, 선택사항이다.

  4. Github에서 만든 repository를 local repository와 연결하기

    • remote repository를 만들면 다음 창이 뜬다.

    • 위 창에서 …or push an existing repository부분 첫번째 줄을 복사하여 터미널로 가서 붙여넣는다.

        git remote add origin https://github.com/[user명]/[remote repository명].git
      
      • origin이라는 이름으로 원격저장소를 설정하겠다는 의미다.

  5. 로컬 폴더에서 remote repository 확인하기

    • git remote로 현 폴더의 원격 레포지토리를 확인해준다.

    • 정상적으로 등록되어있다면 원격 레포지토리 이름이 뜰 것이다. ex) origin

  6. remote repository에 push하기

    • 그 다음 줄을 복사하여 터미널에서 붙여넣는다.

        git push -u origin master
      
      • 폴더의 현 브랜치에 커밋된 내용들을 origin이라는 이름의 원격 레포지토리에 master이란 이름을 가진 브랜치에 올리겠다는 의미다.

    • 컴퓨터에서 처음 사용하는 계정이라면 로그인 창이 뜰 것이다. 깃헙 아이디를 넣고 비밀번호를 넣어준다.

  7. 깃헙 레포지토리 확인하기

    • 정상적으로 push되었다면, 로컬에 있던 파일들이 깃헙 레포지토리에 그대로 등록되었을 것이다.

사용하지 않을 파일 설정하기

코드를 짜다보면 github에는 올릴 필요가 없거나 올려서는 안되는 파일이 있을 수 있다.

이럴때 사용할 수 있는 것이 .gitignore 파일이다.

  • .gitigniore 사용하기

    1. 폴더의 최상위 공간에 .gitignore 이라는 이름의 파일을 생성한다. 기본적으로 숨김파일로 지정된다.

    2. 여기를 참고해서 파일, 폴더 등등을 ignore파일 안에 적어준다.

처음 Github의 코드를 받아오기

  1. github 레포지토리에 들어가서 Clone or download를 누르고 클립보드 복사 버튼을 눌러준다.

  2. 터미널에서 코드를 받아올 폴더로 가서 git clone [붙여넣기]해준다.

    • 이러면 프로젝트의 내역까지 그대로 받아와진다. git log를 통해 확인할 수 있다.

업데이트된 Github의 코드를 반영하기

  1. 원격 레포지토리의 내용을 불러오기

     git fetch
    
    • fetch를 한다고 바로 동기화되는 것은 아니다.

  2. 원격 레포지토리와 동기화하기

     git pull [remote repository 이름] [branch 이름]
    
    • pull까지 해주면 파일이나 커밋 내용이 동기화된다.

    • 협업을 할 때는 코드를 push하기 전에 pull을 먼저 해서 최신 버전의 코드를 반영해서 push하는 것이 좋다.

원격 레포지토리에 브랜치 등록하기

  1. 먼저 브랜치를 만들고 해당 브랜치로 넘어간다.

     git checkout -b [브랜치 이름]
    
    • 위 명령어로 브랜치 생성과 checkout을 한번에 할 수 있다.
  2. Github에 브랜치 올리기

     git push [원격 레포지토리 이름] [올릴 브랜치 이름]
    
  3. Github상에서 확인하기

    • 깃헙 repository 왼쪽 Branch를 눌러보면 다음과 같이 branch가 생긴 것을 볼 수 있다.

    • branch를 누르면 해당 branch에 저장된 파일이 나타난다.

원격 레포지토리의 브랜치를 받아오기

  1. 원격 레포지토리의 상태를 받아오기

     git fetch
    
  2. 원격 레포지토리에 어떤 브랜치가 있는지 확인하기

     git branch -a
    
    • 로컬과 원격의 브랜치를 한번에 볼 수 있다.
  3. 새로운 브랜치를 만듦과 동시에 원격의 브랜치를 들고오기

     git checkout -b [로컬에 만들 브랜치 이름] [원격 레포지토리 이름]/[원격에서 들고올 브랜치 이름]
    
    • 뭔가 복잡해보이지만 사실 간단하다. 아까 했던 것 뒤에 원격 정보만 붙인 것이다.

원격 브랜치 삭제하기

```terminal
git push -d [원격 이름] [삭제할 브랜치 이름]
```

충돌(conflict) 대비하기

  • 충돌이 일어나는 경우
    1. 브랜치간의 충돌 : 마스터에서 브랜치를 merge해올 때 같은 파일, 같은 줄에 코드가 겹치는 경우
    2. 사용자간의 충돌 : 다른 사람이 작업한걸 pull하지 않고 push해서 같은 파일, 같은 줄에 코드가 겹치는 경우

  • 브랜치간의 충돌은 충돌이 일어난 부분에서 선택적으로 코드를 고르고 다시 add, commit 하면 됐다.

  • 사용자간의 충돌도 마찬가지다. pull한 뒤 양쪽 작업에서 겹치는 부분에서 코드를 선택하여 필요없는 부분은 지우고 commit하고 push한다.

    • 이때, Head부분이 내 코드다.