WeniVooks

검색

알잘깔딱센 GitHub 핵심개념

GitHub

1. GitHub 세팅

1.1. GitHub 가입하기

아래 페이지로 들어가 회원가입을 해주세요. 메일 인증까지 하셔야 실습을 진행할 수 있습니다.

GitHub 공식 사이트: Where the world builds software

원하는 이메일을 입력하고 Sign up for GitHub을 클릭하신 후 회원가입을 진행합니다.

기존에는 비밀번호 인증을 통해 로그인을 했지만, 2021년 8월부터 비밀번호 인증을 지원하지 않았습니다. 다만 24년 5월 현재 비밀번호 인증을 지원하는 상태입니다. 만약 비밀번호 인증이 작동되지 않는다면 회원 가입 후 4.2로 가서 token발급을 진행해주세요. 이 내용은 깃헙 정책에 따라 변경이 될 수 있습니다.

1.2. Repository 생성하기

로그인이 되었다면 아래 Create repository를 클릭합니다.

레파지토리 이름을 설정하고 Public(공개)/Private(비공개)를 설정하신 후, Add a README file을 클릭하여 README file을 추가합니다. 설정이 완료되면 Create Repository를 클릭합니다.

  • 나중에 설정 탭에서 Public과 Private 상호 변경 가능합니다.
  • Add a README file은 보통 체킹을 하지 않고 생성하지만, 간편한 실습을 위해 체킹하여 생성하고 실습하도록 하겠습니다. 체킹을 한 것과 체킹을 하지 않은 것 2개 모두 진행합니다.
1.3. GitHub에 파일 올리기
1.3.1. GUI, CLI를 이용하여 GitHub에 올리기
  • Add file > Upload File > 001.html
    • 초기 레파지토리 생성시 README.md 파일을 생성하지 않았을 경우 해당 화면이 나오지 않고, 아래와 같은 git 명령어가 나오게 됩니다. 똑같이 git bash에 입력해주시면 README.md파일이 GitHub 레파지토리로 들어가는 것을 확인할 수 있습니다.

      💡 이미 컴퓨터에 작업하던 디렉토리가 있을 경우 초기에 Add a README file를 선택하지 않고 Create Repository를 선택하여 레파지토리를 만들고 연결하는 작업을 진행해야 합니다. 이 페이지 하단에 디렉토리를 연결하는 법이 기술되어 있습니다.

1.3.2. Repository 내 하위폴더 생성하기

프로젝트를 진행하다보면 레파지토리의 갯수가 늘어나게 될 겁니다. 이렇게 늘어난 레파지토리를 체계적으로 관리하기 위해서는 하위 폴더의 생성이 필요하죠. 하위 폴더를 생성하고자 하는 레파지토리에 들어간 후, 아래 순서를 따라 폴더를 생성해 봅시다.

  1. 우측 상단의 Add file을 클릭하고 Create new file을 클릭합니다.
  1. / 를 기준으로 폴더가 분리됩니다. /{폴더명} 을 입력해서 폴더를 생성합니다.
  1. 빈 폴더는 생성되지 않아요! 임의의 파일을 생성해주어야 아래와 같이 commit new file 버튼이 활성화 됩니다. Commit new file 버튼을 클릭합니다.
  1. GitHubTest 레파지토리안에 test 폴더가 생성되었고 폴더의 하위에 index.html 파일이 생성된 것을 확인할 수 있습니다.

index.html 파일을 각각에 하위 폴더로 넣고 GitHub Page를 운영할 경우 하위 폴더를 http://{계정명}.github.io/{폴더명}/{폴더명} 과 같이 URL 구조처럼 사용할 수 있습니다.

예) paullabkorea/githubtest/test → 실제로는 test 폴더에 index.html로 연결됩니다.

실무에서 바로 적용해야 하는 경우가 아닌 경우, github을 처음 사용하시는 분은 가볍게 GUI로만 사용하시고 익숙해진 다음 CLI로 넘어가시길 권해드립니다.

2. git clone

  • 원격 저장소의 코드를 컴퓨터에 받아올 수 있습니다. 새 작업 디렉토리 만들고(mkdir 명령어) 생성한 디렉토리로 이동(cd 명령어)하겠습니다.
    $ mkdir filename
    $ cd filename
    $ git clone https://github.com/id/clone-filename.git .
    $ mkdir filename
    $ cd filename
    $ git clone https://github.com/id/clone-filename.git .
clone 하기 전 clone 한 후

클론 시 점(.)을 찍는 이유는 현재 폴더에 클론 받기 위해서 입니다. 만약, 점(.)을 찍지 않을 경우 새 폴더를 생성합니다.

3. git pull

원격 저장소에 업데이트 된 데이터를 가져오고 병합할 때 사용합니다.

$ git pull origin main
$ git pull origin main
pull 하기 전 pull 한 후
  • 코드를 수정하고 pull 받으려하니 누군가 이미 코드를 수정했을 경우에 사용하는 명령어 입니다. 여러분이 push를 하려고 했더니 누군가 이미 push를 해서 pull을 받아야 하는 상황이 된거죠.

    시나리오
    A사람 clone --- push1
    B사람 clone -------------- pull-push2
    C사람 clone ------------------------------- push3(pull 받지 않아 error)
    시나리오
    A사람 clone --- push1
    B사람 clone -------------- pull-push2
    C사람 clone ------------------------------- push3(pull 받지 않아 error)
    1. 로컬 main과 원격 main을 다른 브랜치로 보고 병합합니다.

      git pull --no-rebase
      git pull --no-rebase
    2. 시간상 순서대로 병합합니다.

      git pull --rebase
      git pull --rebase

4. git add, git commit, git push

4.1 git add, git commit, git push

이미지 파일을 다운로드 받은 곳에 올리고 아래 명령어를 입력해주세요.

  • 권한이 주어진 경우에는 소스코드 수정 후 커밋과 푸시하기
    $ git status
    $ git add .
    $ git commit -m "추가 작업 내역입니다."
    $ git push origin main
    $ git status
    $ git add .
    $ git commit -m "추가 작업 내역입니다."
    $ git push origin main

push가 완료되면 GitHub에 잘 올라갔는지 확인합니다. push를 하게 되면 로컬 저장소에 있는 소스코드 또는 파일들이 GitHub에 올라가게 됩니다.

3_push-1.png 3_push-2.png Untitled

GUI 환경에서 히스토리를 확인할 수 있습니다. 아래처럼 누가 어떤 소스코드를 수정했는지 내역을 확인할 수 있습니다. 되돌릴 수도 있습니다.

Untitled
  • 원격 저장소와 로컬 저장소의 싱크가 맞지 않아(예를 들어 컴밋 개수가 다르다던지) 로컬 저장소로 강제로 맞추고 싶을 때 사용하는 명령어입니다. 이 명령어는 혼자 레파지토리를 사용할 때 사용하시고 절대 협업시 사용해서는 안되는 명령어입니다.
    git push --force
    git push --force
4.2 git push password 에러
  • (23년 3월, 맥북) token을 발급하지 않아도 readme.md 파일 없이 레파지토리 생성 후 GitHub에서 제시한 명령어를 Visual Studio Code 터미널에 입력하면 간단한 웹 인증만으로 연결이 될 수 있으니 참고 바랍니다.(OS에 따라 안될 수도 있습니다.)

push 할 때 다음과 같은 에러가 뜰 수 있습니다. 2021년 8월 13일부터 비밀번호 인증 지원을 사용하지 못하도록 보안 업데이트가 되었기 때문입니다.

remote: support for password authentication was removed on august 13, 2021. please use a personal access token instead.
remote: support for password authentication was removed on august 13, 2021. please use a personal access token instead.

위와 같은 경우, 비밀번호 대신 token 이나 ssh 두가지 중 하나의 인증을 사용해야 합니다. 실습은 4.4.1 token 발급만 진행합니다.

4.2.1. (실습) token 발급하기
  1. GitHub 오른쪽 상단에 있는 개인 프로필을 클릭한 후, Settings를 클릭합니다.
Untitled Untitled
  1. 좌측 메뉴 가장 하단에 있는 Developer settings > Personal access token > Personal access tokens (classic) > Generate new token을 클릭합니다.

    Untitled

  2. 클릭을 했을 때 **Generate new token (classic)**을 선택해주세요. 휴대폰 인증을 활성화 두었다면 아래처럼 휴대폰 인증이 떴을 수도 있습니다. 활성화 해두지 않았다면 비밀번호를 입력하는 창이 떴을겁니다.

    Untitled

    Untitled

  3. 인증을 마치면, 토큰을 생성합니다. 토큰 이름과 허가할 권한을 체크한 후에 Generate token을 클릭합니다. (repo하나만 체크하셔도 실습하는데 지장 없습니다.)

    Untitled

  4. 생성된 토큰을 복사하고 필요한 곳에 사용합니다. 이때 토큰은 한번만 보여지기 때문에 안전한 곳에 보관합니다. 우선 메모장에 복사해두세요. 발급된 토큰은 부여된 권한만 볼 수 있습니다. 재발급을 원할 경우에는 재발급하고자 하는 토큰을 클릭 후, Regenerate token을 클릭하면 토큰이 재생성 됩니다.

  5. 토큰 발급이 완료되면 운영체제에 맞게 적용시킵니다.

    • Windows 제어판 > 사용자 계정 > 자격 증명 관리자 > Windows 자격증명 > git//github.com 찾기 > 편집 > 암호를 token으로 대체

    • Mac Mac OS의 경우 push 명령어를 실행할 때 여전히 같은 에러가 나타날 수 있습니다. Mac 키체인에 등록되어 있는 GitHub 권한 정보가 ID/Password로 되어 있기 때문인데요. 이럴 경우에는 GitHub의 권한 정보를 위의 발급받은 ID/Personal Access Token으로 변경해주어야 합니다. 아래의 순서에 따라 변경해보세요! 1) 키체인 접근 (Keychain Access app)

      ![Screen Shot 2022-02-28 at 5.38.41 PM.png](/images/github/chapter02-4/Screen_Shot_2022-02-28_at_5.38.41_PM.png)
      
      2) GitHub.com 찾기
      
      ![BFC0150E-BAC0-40D9-8956-238C3AECED83_4_5005_c.jpeg](/images/github/chapter02-4/BFC0150E-BAC0-40D9-8956-238C3AECED83_4_5005_c.jpeg)
      ![Screen Shot 2022-02-28 at 5.38.41 PM.png](/images/github/chapter02-4/Screen_Shot_2022-02-28_at_5.38.41_PM.png)
      
      2) GitHub.com 찾기
      
      ![BFC0150E-BAC0-40D9-8956-238C3AECED83_4_5005_c.jpeg](/images/github/chapter02-4/BFC0150E-BAC0-40D9-8956-238C3AECED83_4_5005_c.jpeg)

    GitHub.com이 없으신 경우에는 빨간색 박스 버튼을 클릭 후 추가하시면 됩니다.

    Untitled

    아래와 같이 이름과 계정 이름 추가하시면 됩니다.

    Untitled

    1. 암호보기(show password)를 클릭하여 token 암호로 대체합니다.

    B5A532F6-B510-4E70-AE38-76000935F9AF_4_5005_c.jpeg

    1. 만약 아래와 같은 화면이 뜨면 MAC 비밀번호를 입력하시면 됩니다.

    Untitled

4.2.2. SSH Key 생성하기
  1. ssh key를 생성합니다. GitHub 계정 생성 시 사용한 이메일과 비밀번호를 입력합니다.

    $ ssh-keygen -t rsa -C "email@example.com"
    Enter file in which to save the key (/c/Users/paullab/.ssh/id_rsa): **Enter를 누릅니다.**
    Enter passphrase (empty for no passphrase): **github password**
    Enter same passphrase again: **github password**
    $ ssh-keygen -t rsa -C "email@example.com"
    Enter file in which to save the key (/c/Users/paullab/.ssh/id_rsa): **Enter를 누릅니다.**
    Enter passphrase (empty for no passphrase): **github password**
    Enter same passphrase again: **github password**
  2. 공개키를 가져옵니다. 공개키가 출력되면 복사합니다.

    $ cat ~/.ssh/id_rsa.pub
    $ cat ~/.ssh/id_rsa.pub
  3. GitHub 상단에 있는 개인 프로필을 클릭한 후, Settings를 클릭합니다.

Untitled
  1. 좌측 메뉴에 SSH and GPG keys > New SSH key를 클릭하여 SSH Key 이름과 Key에 복사한 공개키를 붙여넣습니다.

  2. SSH Key 공개키가 잘 등록된 것을 확인할 수 있습니다.

Untitled
  • 레파지토리가 이미 있다면 2번째 사항 선택 Untitled
    git remote add origin https://github.com/paullabkorea/githubtest.git
      - https://github.com/paullabkorea/githubtest.git저장소를 origin이라는 이름으로 연결 등록
    git branch -M main
      - 현재 로컬에서 master로 되어 있는 기본 브랜치를 main으로 설정
      - 기본 브랜치명 변경(git config --global init.defaultbranch main) 해두셨으면 2번째 생략 가능
    git push -u origin main
      - origin원격 저장소에 main 브렌치에 현재 브랜치 연결(--set-upstream(단축 : -u) )
    git remote add origin https://github.com/paullabkorea/githubtest.git
      - https://github.com/paullabkorea/githubtest.git저장소를 origin이라는 이름으로 연결 등록
    git branch -M main
      - 현재 로컬에서 master로 되어 있는 기본 브랜치를 main으로 설정
      - 기본 브랜치명 변경(git config --global init.defaultbranch main) 해두셨으면 2번째 생략 가능
    git push -u origin main
      - origin원격 저장소에 main 브렌치에 현재 브랜치 연결(--set-upstream(단축 : -u) )
2.3 Git2.5 Branch