Git 명령어 기본편

Page content

개요

  • 깃 명령어의 기본적인 명령어를 실행하는 것을 목표로 한다.
  • 깃 설치 및 깃허브 설치는 기존 게시글을 확인해본다.

Git 환경설정

  • git 명령어를 입력 시, 제대로 실행되지 않았다면 환경변수를 추가한다.
    • 윈도우에서 제어판을 실행한 후 시스템 > 고급 시스템 설정 > 고급 > 환경 변수를 작성한다.
  • 시스템 변수 항목에서 Path를 더블클릭하도록 한다.
  • 환경 변수 편집 창에 C:\Program Files\Git\cmd 경로를 추가한다.
    • 영상을 통해서 한번 보도록 한다.

Git 기본문법

  • git의 명령어의 기본 문법은 아래와 같다.
$ git 명령어 또는 옵션
  • 이 때, 옵션은 짧은 옵션(-)과 긴 옵션(–)으로 구분한다.

Git Version

  • 다음과 같이 작성한다.
$ git --version
git version 2.28.0
  • 깃 명령어를 여러개 묶어서 사용도 가능하다. 이 때에는 세미콜론(;)으로 구분한다. (예)
$ git --version; git status
(출력 생략)

Git 환경설정

  • git을 설치한다고 해서 바로 github와 함께 쓸 수 있는 것은 아니다.
  • 이 때 config 명령어를 사용한다.

글로벌 사용자

  • 로컬 사용자 등록도 다음과 같은 명령어를 통해 생성이 가능하다.
  • 먼저 cd 명령어를 통해서 깃의 저장소가 있는 폴더로 옮긴 뒤 git config 명령어를 실행한다.
$ cd 저장소 폴더
$ git config user.name "사용자이름"
$ git config user.email "이메일주소"
  • 깃에서 사용자를 구분하는 데 쓰는 “사용자 이름"과 “이메일 주소” 중 이메일 주소는 깃이 개발자를 구별하는 고유의 키 값으로 사용한다.
  • 이 때에는 해당 저장소에서만 사용이 가능한 것이지, 로컬 환경 내 다른 저장소는 해당이 되지 않는다.
    • 즉, 혼자서만 사용이 가능하다면 매우 불편하다.
  • 혼자서 사용하기 좋은 글로벌 옵션을 추를 한다.
    • 즉, 글로별 옵션을 권장한다.
$ git config --global user.name "사용자이름"
$ git config --global user.email "이메일주소"

환경 설정 파일

  • 환경 설정 파일은 보통 .git/config 파일 형태로 저장되어 있다.
  • 몇몇 명령어를 입력하여 보자.
    • Note: 각 개개인마다 기본 환경이 다를 수 있으니, 참조 바란다.
$ ls .git
COMMIT_EDITMSG  HEAD            config          hooks           info            modules         packed-refs
FETCH_HEAD      ORIG_HEAD       description     index           logs            objects         refs
  • 만약 config 파일을 찾았다면 다음과 같이 코드를 작성한다.
    • 마찬가지로, 결과물은 설정에 따라 다를 수 있다.
$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
[user]
        name = 사용자이름
        email = 이메일주소
  • 만약 파일을 수정하고 싶다면, 편집기를 활용해서 수정하도록 한다.
    • code, vim, emacs, etc 등 다양한 편집기가 있다.
$ code .git/config
  • pycharm 사용자의 경우 다음과 같이 사용하면 파일이 열리기도 한다.
$ open .git/config

깃 개념

  • 우선 폴더 생성 후에는 초기화 명령어를 입력한다.
$ git init 경로명
  • 초기화 명령어를 입력 시, 경로명을 입력하지 않으면, 현재 폴더에서 초기화된다.
$ git init .
Initialized empty Git repository in 경로

git add의 뜻

  • 깃의 동작을 이해햐려면 먼저 워킹 디렉터리 또는 트리라고 한다.
  • 우선 두가지만 기억하면 된다.
    • untracked 상태: 실제 작업파일 및 폴더가 있는데, 이 공간을 자동으로 추적하지 않는다. 즉, 새로 만든 파일은 모두 untracked 상태인 것이다.
    • tracked 상태: Git이 추적을 할 수 있도록 git add 명령어를 사용한다.
  • 깃은 요청받은 파일들만 추적 관리한다.

git add의 뜻, stage & unstage

  • 추적 상태가 된 뒤에는 임시 영역에 해당되는 스테이지 공간으로 들어간다.
  • 즉, git add가 끝나면 커밋을 하기 전 단계인 임시 영역으로 들어가게 된다.
  • 이 때 구분점은 stage 상태와 unstage 상태와 구분된다.
    • 그러나, 실질적으로는 대개의 경우 tracked 부분과 untracked 부분의 영역은 크게 차이가 없다.
  • 그런데, 예외가 있는데, 스테이지 영역에 있는 파일과 워킹 디렉터리 안에 있는 파일 내용에 차이가 있을 경우 unstage 상태가 된다.
    • 즉, 파일이 수정할 경우 임시적으로 스테이지 목록에서 제거가 된 것이기 때문에 해당 파일만 git add로 추가하면 된다.
  • 이 쯤에서 git 라이프 싸이클을 그림으로 확인해본다.

git add의 뜻, modified & unmodified

  • 코드를 변경한다는 뜻은 파일을 수정한다는 뜻이다.
  • 그런데, 파일이 수정되면, 스테이지에서는 수정한 파일과 원본 파일을 구분하기 위해 수정함(modified)와 수정하지 않음(unmodified) 상태로 표현한다.
  • modified의 의미는 깃이 실제로 기록한 파일이며, 실질적으로 버전을 의미한다.
    • 이 때, 깃 commit을 하면 이 변경 내역은 영구적으로 기록된다.
    • 만약, 파일 수정을 하게 되면 이는 재 등록을 의미한다. 따라서 재 등록을 하려면 git add를 작성해야 한다.
  • unmodified의 뜻은 수정하지 않았음을 의미한다.

요약

  • 다양한 의견이 오갔기 때문에 한번 더 설명하면 아래와 같다. 즉, 스테이지를 기준으로 삼자.
  • modified는 unstage 상태를 말하며, 이 때에는 해당 파일을 git add 하라는 뜻이다.
  • 우리가 습관적으로 git add 한다는 뜻에는 이와 같이 다양한 logic이 내부적으로 돌아가고 있다는 뜻이기도 하다.

git status

  • 이러한 변화의 상태들을 확인하는 가장 좋은 방법은 git status를 의미한다.
  • 필자의 예를 들면 아래와 같다.
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)
        modified:   content/Settings/git_basic.md

no changes added to commit (use "git add" and/or "git commit -a")
  • 여기에서 눈여겨 봐야 하는 것은 modified 영역이다.
    • 이 영역은 현재 필자가 작업중인 파일이다. 즉, unstage 영역이기 때문에, 이 때, git add를 진행해야 함을 의미한다.

.gitignore

  • 데이터 분석가들에게, 가장 어려운 부분은 데이터셋을 깃허브로 올리는가 하는 부분이다.
    • 아쉽지만, 간단한 샘플 데이터를 제외하면, 올리지 않는 것이 좋다. (용량 제한)
  • 이 때, .gitignore 파일에 불필요한 파일이나, 또는 숨기고 싶은 파일, 데이터셋의 경로등을 나열해서 적어둔다.
    • 여기에 파일 목록이 등록이 되면, 해당 파일은 tracked 되지 않는다.
  • 파일을 등록하는 방법은 직접 파일명을 작성하는 방법을 사용하거나, 또는 정규표현식을 사용하기도 한다.

Reference

이호진(2020). Git 교과서. 서울: 길벗. Retreieved from https://thebook.io/080212/