WeniVooks

검색

알잘깔딱센 GitHub 핵심개념

Git

1. Git이란?

  • Git은 소스코드 및 파일의 변경내역을 저장하는 분산 버전 관리 시스템 입니다.
  • 리누스 토발즈에 의해 처음 만들어졌습니다. 리눅스 커널을 만드신 분이십니다.
  • GitHub, Bitbucket, Gitlab 등의 Git 기반 버전 관리 호스팅 서비스들이 있습니다.
  • <추천 서적>
  • <추천 강의>
  • 공식문서 Reference
  • help 명령어
    git help -a : 상세히 명령어들 살펴보기
    git 명령어 -h : 명령어 옵션 보기
    git help 명령어 : web에서 해당 명령어 상세보기
    git help -a : 상세히 명령어들 살펴보기
    git 명령어 -h : 명령어 옵션 보기
    git help 명령어 : web에서 해당 명령어 상세보기
  • git에 기본 에디터 변경
    git config --global core.editor "editor이름"
    git config --global core.editor "code --wait" #VSC를 기본 에디터로 설정, wait을 해주어야 잠시 멈추었다가 VSC에 열린 code 수정 창을 닫으면 CLI가 지속 실행되는 프로세스로 진행됩니다.
    git config --global core.editor "editor이름"
    git config --global core.editor "code --wait" #VSC를 기본 에디터로 설정, wait을 해주어야 잠시 멈추었다가 VSC에 열린 code 수정 창을 닫으면 CLI가 지속 실행되는 프로세스로 진행됩니다.
  • git에 기본 설정 변경
    git config global -e #global 설정입니다. 만지실 때 유의해주세요.
    git config global -e #global 설정입니다. 만지실 때 유의해주세요.
  • 명령어 연습 사이트 Git Explorer Learn Git Branching

2. Git 설치하기

2-1. Ubuntu에서 설치하기

아래 명령어를 입력하여 Git을 설치할 수 있습니다.

$ sudo apt-get update
$ sudo apt-get install git
$ sudo apt-get update
$ sudo apt-get install git
2-2. Mac에서 설치하기

Mac에는 기본적으로 Git이 설치되어 있습니다. 버전에 따라 설치가 안되어 있는 경우도 있습니다. 설치가 되었는지 확인하기 위해서는 터미널 창(cmd + spacebar → terminal)에 아래의 명령어를 입력합니다.

$ git
 
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
...
$ git
 
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
...
2-2-1. zip파일 다운받아 설치하기

설치가 되지 않은 경우나 최신버전의 git을 설치하고 싶은 경우 아래의 순서대로 진행합니다.

  1. https://git-scm.com/ 접속합니다.
  2. Download for Mac 버튼을 클릭합니다.
  3. 다운 받은 파일을 실행합니다.
2-2-2. homebrew로 설치하기

homebrew로 git 설치하기

2-3. Windows에서 설치하기
  1. https://git-scm.com/ 접속합니다.

  2. Download for Windows 버튼을 클릭하면 아래와 같은 페이지가 열리는데 Click here to download를 눌러주세요. Portable은 무설치 버전입니다.

  3. 다운 받은 파일을 실행합니다. (설치 옵션 중 기본 브랜치를 main으로 바꾸는 옵션이 있습니다. 이미 Git을 어느정도 숙지하신 분이라면 아래 것을 클릭해서 진행해주세요. 수업은 모든 옵션을 변경하지 않고 그대로 진행합니다.)

    • git config --global init.defaultbBranch main으로 추후 변경 가능합니다.

3. 버전 확인 및 초기 설정

다운 받은 Git 버전을 확인할 수 있습니다.

$ git --version
git version 2.37.3
$ git --version
git version 2.37.3

Git을 사용하기 위해 사용자 정보를 설정합니다. 설정을 제대로 했는지 확인하기 위해서 list 명령어를 사용할 수 있습니다. (get 명령어를 사용하셔도 됩니다.)

🧐 해당 절차를 진행하지 않으면 뒤에 push 가 안될 수 있습니다.

$ git config --global user.name "hojun.lee"
$ git config --global user.email email@example.com
$ git config --list
$ git config --global user.name "hojun.lee"
$ git config --global user.email email@example.com
$ git config --list
$ git config --get user.name
$ git config --get user.email
$ git config --get user.name
$ git config --get user.email

이때, email 설정과 username 설정을 제대로 안해주시면 커밋내역에서 계정 이름이 아닌 유저이름이 올라갈 수도 있습니다.

  • GitHub을 먼저 가입하셨다면 GitHub에 있는 주소로 하세요. 이 챕터에서 GitHub에 가입하시지 않으셨어도 진행하는데 무리가 없습니다. 여러분 이름과 이메일을 입력해주세요. 이는 협업할 때 누가 작업했는지를 나타냅니다.

  • VSC에서 사용하실 것이라면 Ctrl + Shift + P를 눌러 Terminal: Select Default Profile을 git bash로 변경해주세요.

4. 저장소 만들기

  • 작업할 디렉토리를 만들고(mkdir) 생성한 디렉토리로 이동하기(cd)

    $ mkdir git-test
    $ cd git-test
    $ mkdir git-test
    $ cd git-test
  • 현재 디렉토리를 Git 저장소로 만들어 원하는 디렉토리를 기준으로 버전관리를 합니다.

    $ git init
    $ git init

    git init 을 입력하면 해당 폴더 기준으로 .git(로컬 저장소)가 생성됩니다. 로컬 저장소에는 버전 정보, 원격 저장소 주소가 저장됩니다.

    💡 이때, 한 폴더에는 하나의 .git(로컬 저장소)을 가져야 합니다. 그렇지 않을 경우 충돌이 발생할 수 있습니다.

5. First commit!

5.1. 추가하고 커밋하기(add, commit)
  • 파일을 생성(touch), 추가(add)하고 커밋(commit)하기
    • 아래 코드를 입력 및 실행하고, 이어 설명하도록 하겠습니다.
$ touch README.md
$ git status # Untracked 확인
$ git add README.md
$ git commit -m "first commit"
$ touch README.md
$ git status # Untracked 확인
$ git add README.md
$ git commit -m "first commit"
5.1.1. git이 관리할 대상의 파일 등록하기(add)

변경한 파일 목록 중 스테이지에 올리기 원하는 파일만 선택합니다. 파일 전체를 올리고 싶은 경우에는 git add 뒤에 .을 입력합니다(git add .). 이 때, 스페이스 바가 한 칸 들어간 다는 점을 잊지마세요!

$ git add README.md // 지정 파일 올리기
$ git add . // 파일 전체 올리기
$ git add README.md // 지정 파일 올리기
$ git add . // 파일 전체 올리기

💡 Untracked → Unmodified → Modefied → Staged |—————— git add ———————→| | ←——— git commit ——|

(각각 상태에 대한 상세 설명은 5.2 챕터에 있습니다.)

5.1.2. 버전 만들기 (commit)
$ git commit -m "저장 메세지를 입력해주세요"
$ git commit -m "저장 메세지를 입력해주세요"
5.2. 상태 확인하는 방법 (status , diff , log)
5.2.1. 파일 상태 확인하기 (status)
$ git status
$ git status

파일의 상태에 따라 Untracked 와 Tracked 로 분류됩니다.

  1. Untracked(관리 대상이 아님) : 파일 생성 후 한번도 git add하지 않은 상태를 말합니다.

  2. Tracked(관리 대상임) : git이 관리하는 파일임을 의미합니다.

  • Unmodified : 최근의 커밋과 비교했을 때 바뀐 내용이 없는 상태
  • Modified : 최근 커밋과 비교했을 때 바뀐 내용이 있는 상태
  • Staged : 파일이 수정되고 나서 스테이지 공간에 올라와 있는 상태이며, git add 후의 상태

아래의 그림을 통해 로컬 저장소와 원격 저장소 사이의 파일 이동 경로 및 상태를 확인하고 어떤 명령어가 사용되는지 살펴보세요!

알잘딱깔센 github
5.2.2. 변경사항 확인하기 (diff)

변경된 내용을 확인하기 위해 diff 명령어를 사용합니다. 파일 내용을 수정 한 후 git diff 명령어를 입력하면 변경된 내용을 확인할 수 있습니다. 이때, git diff 명령어는 git add 명령어를 사용하기 전에 사용합니다.

$ git diff
$ git diff
5.2.3. 커밋(commit) 히스토리 조회하기 (log)
$ git log
$ git log

위와 같이 git log 명령어를 입력하면, 최근 커밋한 히스토리를 확인할 수 있습니다. 이 log 명령어에 대한 더 자세한 내용은 부록의 ‘GitHub log 옵션’ 에서 살펴보겠습니다.

로그가 길 경우 q를 누르시면 밖으로 빠져나옵니다. j위, k는 아래로 이동할 수 있습니다.

5.3. 저장소에 무시할 파일 설정하는 방법
5.3.1. 무시할 파일 (gitignore) 추가 하기
  1. .gitignore 사용하기

push 전 .gitignore 파일에 버전 관리에서 제외할 파일을 추가합니다.

# a comment - 이 줄은 무시한다.
# 확장자가 .a인 파일 무시
*.a
# 윗 줄에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않는다.
!lib.a
# 루트 디렉토리에 있는 TODO파일은 무시하고 subdir/TODO처럼 하위디렉토리에 있는 파일은 무시하지 않는다.
/TODO
# build/ 디렉토리에 있는 모든 파일은 무시한다.
build/
# `doc/notes.txt`같은 파일은 무시하고 doc/server/arch.txt같은 파일은 무시하지 않는다.
doc/*.txt
# `doc` 디렉토리 아래의 모든 .txt 파일을 무시한다.
doc/**/*.txt
# a comment - 이 줄은 무시한다.
# 확장자가 .a인 파일 무시
*.a
# 윗 줄에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않는다.
!lib.a
# 루트 디렉토리에 있는 TODO파일은 무시하고 subdir/TODO처럼 하위디렉토리에 있는 파일은 무시하지 않는다.
/TODO
# build/ 디렉토리에 있는 모든 파일은 무시한다.
build/
# `doc/notes.txt`같은 파일은 무시하고 doc/server/arch.txt같은 파일은 무시하지 않는다.
doc/*.txt
# `doc` 디렉토리 아래의 모든 .txt 파일을 무시한다.
doc/**/*.txt
  1. .gitignore 자동 생성기 활용하기

.gitignore 파일을 직접 생성해야 하는 경우가 종종 있습니다. 이 때, 라이브러리와 프레임워크를 사용하는 경우에는 어떤 파일을 깃 버전 관리에서 제외 시켜야 하는지(.gitignore파일에 넣어야 되는지) 헷갈리는 경우가 있죠. 혹은 일일이 작성하기 번거로운 경우도 있습니다. 이럴 때 편하게 사용할 수 있는 툴인 gitingnore.io 를 활용해보세요!

gitignore.io

  • .gitignore 사용 방법
    1. 위 링크에 접속 후 본인의 프로젝트에서 사용하는 운영체제, 개발 환경, 기술 스택을 작성합니다.
    2. 생성 버튼을 눌러 내용을 생성한 후, 전체 내용을 복사하고 .gitignore 파일에 추가합니다. gitignore.io에서 node 스택으로 생성한 파일
2.2 Git & GitHub의 기본 개념2.4 GitHub