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
명령어를 사용한다.
- untracked 상태: 실제 작업파일 및 폴더가 있는데, 이 공간을 자동으로 추적하지 않는다. 즉, 새로 만든 파일은 모두
- 깃은 요청받은 파일들만 추적 관리한다.
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
를 진행해야 함을 의미한다.
- 이 영역은 현재 필자가 작업중인 파일이다. 즉, unstage 영역이기 때문에, 이 때,
.gitignore
- 데이터 분석가들에게, 가장 어려운 부분은 데이터셋을 깃허브로 올리는가 하는 부분이다.
- 아쉽지만, 간단한 샘플 데이터를 제외하면, 올리지 않는 것이 좋다. (용량 제한)
- 이 때,
.gitignore
파일에 불필요한 파일이나, 또는 숨기고 싶은 파일, 데이터셋의 경로등을 나열해서 적어둔다.- 여기에 파일 목록이 등록이 되면, 해당 파일은
tracked
되지 않는다.
- 여기에 파일 목록이 등록이 되면, 해당 파일은
- 파일을 등록하는 방법은 직접 파일명을 작성하는 방법을 사용하거나, 또는 정규표현식을 사용하기도 한다.
- 자세한 부분은 https://www.toptal.com/developers/gitignore 에서 확인해보자.
Reference
이호진(2020). Git 교과서. 서울: 길벗. Retreieved from https://thebook.io/080212/