12 분 소요

GitHub

  • 계정(이-메일) » 저장소명 » 프로젝트명 설정
    • account » repository » project
  • 초기 설정: Initialize with
    • public/private 결정
    • README.md 작성 (선택사항)
    • .gitignore: ex. R (선택사항)
    • license: ex. MIT (선택사항)
  • 저장소 주소를 복사: copy the repository URL or SSH
    • 리눅스는 URL 방식 불허 » SSH 방식 이용함

설치

$ sudo apt install git
  • Window 에서는 아래 세 개 관리프로그램 가운데 하나 사용
  • 위 두 개는 리눅스처럼 bash 명령어($ 커서에서 작동) 이용

GitHub 에 파일 올리기

먼저 깃허브 원격접속 수정하려면 인증수단 마련

  • 기본적으로 HTTPS 방식과 SSH 방식이 있다

  • WSL 사용자는 SSH 방식이 좋을 것으로 판단한다

SSH 방법

1) 개인 리눅스 쉘에서 SSH 키를 생성/등록

  $ cd
  $ mkdir ~/.ssh
  $ chmod 700 ~/.ssh
  $ cd .ssh
  $ ssh-keygen -t rsa -b 4096 -C "메일 주소 입력"
  • 명령 옵션 내용

    • -t : 키 유형을 지정 : 여기서는 rsa

    • -b : 비트수 : 지정하지 않는 경우 rsa 디폴트는 3072비트(4096은 2의 12승)

    • -C : 코멘트 : 공개키 내용 마지막 부분에 적히게 됨

  • 명령 결과로 암호입력을 요구받고 암호입력

    • 그러면 저장위치와 key fingerprint 와 randomart image 표시됨
  • ls -l 명령으로 id_rsaid_rsa.pub 두 파일 생성 확인

    • id_rsa는 개인키이므로 절대적으로 보안에 유의할 것

    • id_rsa.pub는 공개키이므로 화면 출력해 내용을 복사해 둠

      • 공개키 내용은 cat ~/.ssh/id_rsa.pub 등으로 확인 가능

      • 내용은 ssh-rsa로 시작해 본인 메일 주소로 끝난다

  • 이제 ssh-add ~/.ssh/id_rsa 명령으로 개인키를 SSH-Agent에 등록

  • 만약 이미 가지고 있다면 기존의 것을 이용하면 된다

    • 일반적으로 ~/.ssh 경로에 위치

2) 깃허브에 공개키 등록

  • 깃허브 개인계정 표시에서

    • Settings » SSH and GPG keys » New SSH key

      • Title : 키 이름 기억나기 좋게 아무렇게나 명명

      • Key 부분에 공개키 문자내용을 복사-붙여넣기

      • 박스 하단에 Add SSH key 클릭

    • 그러면 SSH keys 창에 내가 명명한 키들이 등록된 내용이 보임

  • 깃허브 Clone or download 부분에서 접근방식 변경

    • 기본 설정으로 Clone with HTTPS 로 되어 있는데

    • 이를 Use SSH 로 수정하고 그 저장소 주소를 복사해 둠

3) 내 리눅스 환경으로 돌아와서 저장소 주소를 추가함

  $ git remote add origin git@github.com:*****.git
  • 원격저장소 이름이 origin 으로 표시됨

  • git remote -v 명령으로 origin 저장소가 등록된 것을 확인

깃허브 이용을 위한 환경 설정

  • First, we need to configure our Git environment
$ git config --global user.name "yourName"
$ git config --global user.email "yourEmail"
$ git config --list 
  • 프로젝트(디렉토리)별로 다르게 하고 싶으면
    • 글로벌옵션(--global) 생략
    • 디렉토리별 설정이 우선적으로 적용됨

깃 명령은 3단계로 구성

Git requires three steps

1) add 2) commit 3) push

$ git init
$ git add READE.md 
$ git status # commit 대상 변경사항(생성/수정/삭제) 정보 확인 
  • READ.me 파일을 예로 든 것임
  • 모든 문서작성 작업은
    • GitHub 원격저장소에서 직접 할 수도 있음
    • 그러나 복잡한 작업은 번거롭기도 하거니와
    • 로컬과 원격 각각 수정하면 충돌 나서 수동 해결 필요
    • 되도록 로컬 작업 후 합치는 것이 바람직
$ git commit -m "my commit message" 
$ git branch -M main 
$ git remote add origin {Git_URL} 
$ git remote -v # 원격저장소 등록현황 조회
$ git push -u origin main
  • commit 옵션 -m 또는 --message 의미는 commit message
  • branch 옵션 -M 의미는 move/rename a branch, even if target exists
  • push 옵션 -u 또는 --set-upstream 의미는 set upstream for git pull/status

에러 등 예외사항 처리

  • 병합시 에러 날 때:
    $ git checkout main
    $ git merge {mybranch}
    
  • 또는 git pull 시 stash 또는 merge 를 우선 하라고 나올 때:
    • 출처
    • 중요하지 않은 경우는 다음과 같이 덮어쓰기 하는 것이 빠르다.

다음 내용은 원격저장소 내용으로 로컬 저장소를 덮어 쓰는 효과가 난다.

먼저 로컬 저장소를 백업해 두는 것이 좋겠다

  1. 로컬 브랜치를 하나 더 만드는 것이 가장 편리하겠다
    $ git branch <적당한 브랜치 이름>
    
  2. 원래 브랜치(master)로 돌아와 아래 내용 진행
    $ git fetch --all # 내용 업데이트
    $ git reset --hard origin/master # 강제 덮어쓰기
    $ git pull # 확인해 본다
    

만약 로컬 저장소 내용으로 원격(깃헛) 저장소를 덮어 쓰고 싶다면

$ git push -f <remote> <branch>
  • 예: git push -f origin mybranch