티스토리 뷰

반응형
이 문서는 "지옥에서 온 문서 관리자 깃&깃허브 입문 - 이고잉, 고경희 지음" 책의 내용을 정리한 것입니다.

 

02. 깃으로 버전 관리하기

02-1 깃 저장소 만들기

깃 초기화하기 - git init

1. 깃 저장소를 만들 디렉터리 생성 (디렉터리 이름은 자유)

$ mkdir hello-git
$ cd hello-git

2. 생성한 디렉터리 내용 확인

$ ls -al

3. 해당 디렉터리에 저장소 생성. 깃을 사용할 수 있도록 디렉터리를 초기화하는 것

# init은 initialize(초기화하다)의 약자
$ git init

4. 디렉터리 내용 재확인 → '.git' 디렉터리가 생성된 것을 확인

$ ls -al

※ 윈도우의 탐색기나 맥 Finder에서는 .git 디렉터리가 화면에 나타나지 않을 수도 있음. 이럴 경우 '숨긴 파일'을 확인해보도록!

 

02-2 버전 만들기

깃에서 버전이란

문서를 수정하고 저장할 때마다 생기는 것
원래 파일 이름은 그대로 유지하면서 파일에서 무엇을 변경했는지를 변경 시점마다 저장할 수 있음
각 버전마다 작업 내용 확인 또는 해당 버전으로 되돌아가기 가능

 

스테이지와 커밋 이해하기

작업 트리(working tree)

  • 파일 수정, 저장 등의 작업을 하는 디렉터리
  • 작업 디렉터리(working directory)라고도 함
  • 우리 눈에 보이는 디렉터리 ex) 위에서 생성한 hello-git 디렉터리

스테이지(stage)

  • 버전으로 만들 파일이 대기하는 곳
  • 스테이징 영역(staging area)이라고 부르기도 함
  •  'add' 명령 실행 시 작업 트리에 있던 파일이 스테이지에 저장됨
  • 스테이지의 내용은 .git/index 파일에 저장

저장소(repository)

  • 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳
  • 리포지토리 또는 저장소라고도 함 (여기에서는 저장소라고 부름)
  • 'commit' 명령 실행 시 스테이지에 대기하던 파일이 저장소에 저장됨
  • 저장소의 내용은 .git/HEAD 파일에 저장

스테이지와 저장소는 눈에 보이지 않음

깃을 초기화할 때 만들어지는 .git 디렉터리 안에 숨은 파일 형태로 존재하는 영역

 

깃 상태 확인 - git status

$ git status

1. On branch master : 현재 master 브랜치에 있음
2. No commits yet : 아직 커밋한 파일이 없음
3. nothing to commit : 현재 커밋할 파일이 없음

 

수정한 파일을 스테이징하기 - git add

$ git add <파일명>
  • 깃에서 버전 만들 준비를 하라고 알려주는 것
  • '스테이징(stagint)' / '스테이지에 올린다' / '인덱스(Index)에 등록한다' 라고 표현
  • 수정한 파일이 스테이지에 추가됨
  • 파일 이름 대신 마침표(.)를 붙이면 작업 트리에서 수정한 파일들을 한꺼번에 스테이지에 올릴 수 있음

 

스테이지에 올라온 파일 커밋하기 - git commit

$ git commit -m "<커밋 메시지>"
  • 스테이지에 있는 파일을 커밋
  • '커밋(commit)한다' 라고 표현
  • -m 옵션을 붙이면 커밋과 함께 저장할 메시지(커밋 메시지) 기록 가능
  • 커밋 메시지는 주로 영어로 작성!

 

스테이징과 커밋 한꺼번에 처리하기 - git commit -am

$ git commit -am "<커밋 메시지>"
$ git commit -a -m "<커밋 메시지>"
  • 스테이지에 올리고 커밋하는 과정을 한꺼번에 처리 가능
  • 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 사용 가능

 

02-3 커밋 내용 확인하기

커밋 기록 자세히 살펴보기 - git log

$ git log
  • 버전이 제대로 만들어졌는지 확인 가능
  • 지금까지 커밋한 버전이 설명과 함께 표시됨
  • 커밋을 만든 사람, 만든 시간, 커밋 메시지 등이 표시됨
  • 커밋 해시(commit hash) 또는 깃 해시(git hash) : 커밋을 구별하는 아이디
  • HEAD -> master : 이 버전이 가장 최신이라는 표시
  • Author : 버전 작성자
  • Date : 버전 작성일

 

변경 사항 확인하기 - git diff

$ git diff
  • 작업 트리에 있는 파일과 스테이지에 있는 파일을 비교
  • 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교

 

02-4 버전 만드는 단계마다 파일 상태 알아보기

tracked 파일과 untracked 파일

tracked 파일

  • 한 번이라도 커밋을 한 파일
  • 수정 여부를 계속 추적함
  • 깃이 추적하고 있다는 뜻에서 tracked 파일이라고 부름

untracked 파일

  • 한 번도 깃에서 버전 관리를 하지 않은 파일
  • 수정 내역을 추적하지 않음
  • 깃이 추적하지 않고 있다는 뜻에서 untracked 파일이라고 부름

 

.gitignore 파일

버전 관리 중인 디렉터리 안에 버전 관리를 하지 않을 특정 파일 또는 디렉터리가 있는 경우 .gitignore 파일을 만들어 목록 지정 가능.
.gitignore 파일을 만들어 그 안에 버전 관리를 하지 않을 파일 또는 디렉터리 이름이나 파일 확장자를 입력하면 됨.
예:

mynote.txt
temp/
.swp

 

unmodified, modified, staged 상태

unmodified

수정되지 않은 상태

modified

수정만 된 상태

staged

커밋 직전 상태(파일이 스테이지에 올라간 상태)

파일 상태 단계

 

방금 커밋한 메시지 수정하기

가장 최근의 커밋 메시지를 수정하려면 --amend를 붙입니다.

$ git commit --amend

명령을 실행하면 기본 편집기가 실행되면서 원래 커밋 메시지가 화면 위쪽에 나타납니다. 메시지를 수정한 뒤 내용을 저장하면 커밋 메시지가 수정되면서 이전 커밋에 더해집니다.

 

02-5 작업 되돌리기

작업 트리에서 수정한 파일 되돌리기 - git checkout

$ git checkout -- <파일이름>
  • 작업 트리에서 수정한 내용을 취소
  • checkout으로 되돌린 내용은 재복구 불가능

 

스테이징 되돌리기 - git reset HEAD

$ git reset HEAD <파일 이름>
  • 수정된 파일을 스테이징했을 때, 스테이징을 취소(not stage)
  • 파일 이름을 지정하지 않을 경우, 스테이지에 있는 모든 파일을 되돌림

 

커밋 되돌리기 - git reset

# 가장 마지막에 한 커밋을 취소
$ git reset HEAD^
# 가장 최근 3개의 커밋을 취소
$ git reset HEAD~3
# 특정 커밋으로 되돌리기
$ git reset --hard <되돌아갈 커밋 해시(커밋 ID)>
  • 수정된 파일을 스테이징하고 커밋까지 했을 때, 커밋을 취소
  • HEAD^는 현재 HEAD가 가리키는 브랜치의 최신 커밋을 가리킴
  • 취소한 파일이 작업 트리에만 남게 됨

 

git reset 명령의 옵션

명령 설명
--soft HEAD^ 최근 커밋을 하기 전 상태로 작업 트리를 되돌림
--mixed HEAD^ 최근 커밋과 스테이징을 하기 전 상태로 작업 트리를 되돌림 (default)
--hard HEAD^ 최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업 트리를 되돌림 (※ 이 옵션으로 되돌린 내용은 복구할 수 없음)

 

커밋 삭제하지 않고 되돌리기 - git revert

$ git revert <취소할 커밋 해시(커밋 ID)>
  • 커밋을 되돌리더라도 취소한 커밋을 남겨둠
  • 변경한 이력을 취소한 새 커밋을 생성

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함