본문 바로가기

Study/Git

[Git] 2장. 깃으로 버전 관리하기

깃 초기화

  • 해당 디렉터리에서 깃을 사용할 수 있도록 초기화 해준다.
$ git init

 

깃 상태 확인

  • 해당 디렉터리의 깃 상태를 확인할 수 있다.
$ git status

 

버전

  • 버전은 문서를 수정하고 저장할 때마다 생기는 것으로 점차 쌓인다.
  • 깃은 파일을 다른 이름으로 저장하지 않고, 만든 시간과 수정 내용까지 기록하여 저장한다.
  • 깃은 버전마다 작업했던 내용을 확인할 수 있고, 그 버전으로 되돌아갈 수도 있다.

 

작업 트리

  • 파일 수정, 저장 등의 작업을 하는 디렉터리로, 우리 눈에 보이는 디렉터리가 바로 작업 트리다.

 

스테이지

  • 버전으로 만들 파일드리 대기하는 곳이다.
  • 스테이징 영역(staging area)라고 부르기도 한다.
  • 저장소와 함께 .git 디렉터리에 숨은 파일 형태로 존재한다.

 

스테이징

  • 수정한 파일을 스테이지에 추가한다.
$ git add <File>

 

저장소

  • 스테이지에 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳이다.
  • 리포지토리(repository)라고 부르기도 한다.
  • 스테이지와 함께 .git 디렉터리에 숨은 파일 형태로 존재한다.

 

커밋

  • 새로운 버전이 생성되면서 스테이지에 대기하던 파일을 저장소에 저장한다.
$ git commit
  • -m 옵션을 붙이면 커밋과 함께 저장할 메시지를 적을 수 있다.
$ git commit -m "MESSAGE"
  • -am (혹은 -a -m) 옵션을 붙이면 한 번 커밋한 파일에 한해서 스테이징과 커밋을 한꺼번에 처리할 수 있다.
$ git commit -am "MESSAGE"
$ git commit -a -m "MESSAGE"
  • 가장 최근의 커밋 메시지를 수정할 수 있다.
  • 명령어 입력시 기본 편집기가 실행된다.
$ git commit --amend

 

커밋 로그

  • 저장소에 저장된 버전을 확인할 수 있다.
$ git log
  • commit 항목에는 커밋 해시(commit hash)가 있다.
  • commit 항목 마지막에 생길 수 있는 (HEAD -> master)는 이 버전이 가장 최신이라는 표시다.
  • Author 항목에는 누가 만들었는지 나타낸다.
  • Date 항목에는 버전이 언제 만들어졌는지 나타낸다.
  • --oneline 옵션을 쓰면 한 줄에 한 커밋씩 나타내 주기 때문에 커밋을 간략히 확인할 수 있다.
$ git log --oneline

 

변경 사항 확인

  • 작업 트리에 있는 파일과 스테이지에 있는 파일을 비교하거나, 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교해서 수정한 파일을 커밋하기 전에 최종적으로 검토할 수 있다.
$ git diff

 

파일의 상태

  • tracked file: 한 번이라도 커밋을 한 파일로, 수정 여부가 계속 추적되는 파일이다.
  • untracked file: 한 번도 깃에서 버전 관리를 하지 않았기 때문에 수정 내역가 추적되지 않는 파일이다.
  • unmodified: 파일이 커밋된 후, 수정되어 있지 않은 상태다.
  • modified: 파일이 커밋된 후, 수정만 되어 있고 스테이지에 올라와 있지 않은 상태다.
  • staged: 파일이 스테이지에 올라가 있는 상태다.

 

버전 관리에서 제외할 파일 지정하기

  • 버전 관리 중인 디렉터리 안에 버전관리를 하지 않을 특정 파일 또는 디렉터리가 있다면 .gitginore 파일을 만들어 목록을 지정할 수 있다.
  • 아래와 같이 .gitignore 파일의 내용을 작성하면 mynote.txt파일과 temp 디렉터리, 확장자가 .swp인 파일을 버전 관리에서 제외시킬 수 있다.
mynote.txt
temp/
.swp

 

작업 되돌리기

  • 작업 트리에서 수정한 내용을 취소할 수 있다.
  • 단, 되돌린 내용을 다시 복구할 수 없다.
$ git checkout -- <File>

 

스테이징 되돌리기

  • 작업 되돌리기가 디렉토리에 있는 파일을 되돌렸다면, 스테이징 되돌리기는 스테이징을 취소하는 방법이다.
  • HEAD 다음에 파일 이름을 지정하지 않으면 스테이지에 있는 모든 파일을 되돌린다.
$ git reset HEAD <File>

 

커밋 되돌리기

  • 'HEAD^'를 사용하여 현재 HEAD가 가리키는 브랜치의 최신 커밋을 취소할 수 있다. (HEAD에 대한 내용은 3강에서)
  • 커밋 해시를 사용하여 특정 커밋으로 되돌릴 수 있다.
  • 최근 커밋을 하기 전 상태로 작업 트리를 되돌린다.
$ git reset --soft HEAD^
$ git reset --soft <되돌아갈 커밋 해시>
  • 최근 커밋과 스테이징을 하기 전 상태로 작업 트리를 되돌린다.
  • 옵션 없이 git reset 명령을 사용할 경우 이 옵션을 기본으로 작동한다.
$ git reset --mixed HEAD^
$ git reset HEAD^
$ git reset --mixed <되돌아갈 커밋 해시>
$ git reset <되돌아갈 커밋 해시>
  • 최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업 트리를 되돌린다.
  • 이 옵션으로 되돌린 내용은 복구가 불가능하다.
$ git reset --hard HEAD^
$ git reset --hard <되돌아갈 커밋 해시>
  • 커밋을 되돌리더라도 커밋을 남겨둘 수 있다.
  • reset은 되돌아갈 커밋 해시를 지정하지만, revert는 취소할 커밋 해시를 지정한다.
$ git revert <취소할 커밋 해시>

'Study > Git' 카테고리의 다른 글

[Git] 5장. 깃허브로 협업하기  (0) 2021.05.27
[Git] 4장. 깃허브로 백업하기  (0) 2021.05.23
[Git] 3장. 깃과 브랜치  (0) 2021.05.22
[Git] 1장. 깃 시작하기  (0) 2021.05.17