Post

[Do it! 5일 만에 끝내는 깃&깃허브 입문] 2장. 깃으로 버전 관리하기

[Do it! 5일 만에 끝내는 깃&깃허브 입문] 2장. 깃으로 버전 관리하기

“Do it! 5일 만에 끝내는 깃&깃허브 입문” 도서 바로가기

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

2-1. 깃 저장소 만들기

  • 저장소(repository): 깃으로 버전 관리를 할 때 필요한 폴더 안의 버전이 저장되는 공간
  • mkdir hello-git → cd hello-git → git init (초기화) ⇒ .git이라는 디렉터리 생성됨

2-2. 버전 만들기

깃의 작업 영역

작업 트리스테이지저장소
우리 눈에 보이는 디렉터리.git 디렉터리 안에 숨은 파일 형태로 있어 보이지 않음.git 디렉터리 안에 숨은 파일 형태로 있어 보이지 않음
 .git 디렉터리 ← git init 명령으로 만든 저장소 영역.git 디렉터리 ← git init 명령으로 만든 저장소 영역
파일 수정, 저장 등의 작업을 하는 디렉터리버전으로 만들 파일이 대기하는 곳스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳

스테이지와 커밋 이해하기

  • add : 파일을 작업 트리에서 스테이지에 넣을 때 사용하는 명령
  • commit : 깃에서 버전을 만드는 명령

⇒ 작업 트리에서 문서 수정 → 수정한 파일 가운데 버전으로 만들고 싶은 것을 스테이지에 저장 → 스테이지에 있던 파일을 저장소로 커밋하면 버전이 만들어짐

작업 트리에서 변경 사항 만들기

  • git status : 깃 상태 확인
    • 출력되는 메시지:
      • On branch main : 현재 main 브랜치에 있음.
      • No commit yet : 커밋한 파일이 아직 없음.
      • nothing to commit : 현재 커밋할 파일이 없음.

스테이지에 변경 사항 올리기 - git add

‘스테이징(staging)’ 또는 ‘스테이지에 올린다’ 또는 ‘인덱스에 등록한다’ : 깃에게 버전 만들 준비를 하라고 알려 주는 것

스테이징한 파일 커밋하기 - git commit

‘커밋(commit) 한다’: 버전을 만드는 것

  • 커밋 메시지 넣기: git commit -m "message1"

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

  • -am : all을 뜻하는 -a 옵션과 message를 뜻하는 -m 옵션을 함께 묶은 것. 따로 적용도 가능.

2-3. 커밋 내용 확인하기

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

  • git log : 지금까지 만든 버전이 화면에 보이고 버전마다 설명도 함께 나타남
  • 커밋 해시(commit hash) 또는 깃 해시(git hash): 커밋을 구별하는 아이디
  • 커밋 로그: git log 명령 입력했을 때 나오는 정보

변경 사항 확인하기 - git diff

  • 파일의 변경 사항을 행(Line) 단위로 비교하여 보여주는 명령어
  • 기능: 수정 내용 확인 → 파일에서 어떤 부분이 추가(+)되고 삭제(-)되었는지 대조함

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

tracked 파일과 untracked 파일

  • tracked 파일: Git이 과거를 기억하고 변화를 지켜보는 파일
  • untracked 파일: Git이 관여하지 않는 새로 만들어진 파일
  • $ git log --stat : —stat 옵션은 ‘statics’의 줄임말로 커밋과 관련된 여러 통계 보여줌

unmodified, modified, stage 상태

  • 버전을 한 번이라도 만들었던 파일은 tracked 상태 → 파일이 tracked 상태라면 깃 명렁으로 현재 위치를 더 구체적으로 알 수 있음
  • Tracked 파일의 3가지 상태
    1. Unmodified (수정되지 않음): 마지막 커밋 이후로 내용이 전혀 변하지 않은 상태. Git 저장소와 워킹 디렉터리의 파일 내용이 완벽히 일치.
    2. Modified (수정됨): 마지막 커밋 이후에 파일을 수정했지만, 아직 스테이징 영역에 올리지 않은 상태. Git은 변화를 감지했지만, 아직 “이 수정을 저장하겠다”는 의사가 전달되지 않음.
    3. Staged (커밋 대기): 수정된 파일을 git add 명령어로 스테이징 영역(Index)에 올린 상태. 다음 커밋을 실행할 때 이 상태의 파일들이 새로운 스냅샷으로 기록됨.
  • 상태 변화 과정 (Flow)
    • 수정 시: Unmodified → 파일을 고침 → Modified
    • 추가 시: Modified → git add 실행 → Staged
    • 커밋 시: Staged → git commit 실행 → Unmodified (다시 초기 상태로)

2-5. 작업 되돌리기

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

: 파일의 내용을 과거로 되돌리는 것

스테이징 되돌리기 - git restore –staged

: 파일의 상태(커밋 대기 여부)만 이전으로 되돌리는 것

  • git reset HEAD^: 최신 커밋 되돌리기 → main의 최신 커밋 취소 & 스테이지에서도 내려감. 작업 트리에만 파일 남음.
  • restore : 스테이징만 취소
  • reset : 커밋 취소

특정 커밋으로 되돌리기 - git reset 해시

  • reset에서 커밋 해시를 사용해 되돌릴 때 주의할 점
    • 예를 들어, reset A 를 입력하면 이 명령은 삭제하는 것이 아니라 A 커밋 이후에 만들었던 커밋을 삭제하고, A커밋으로 이동하겠다는 의미. 최신 커밋을 가리키는 HEAD를 A로 리셋함.
    • $ git reset --hard 복사한 커밋 해시

커밋 변경 이력 취소하기 - git revert

  • git revert : 변경 사항만 취소하고 커밋은 남겨 두는 것
  • reset 명령을 사용한다면, 취소할 커밋의 해시가 아니라 되돌아갈 커밋 해시를 지정
  • revert 명령을 사용한다면, 취소할 커밋 해시를 지정
This post is licensed under CC BY 4.0 by the author.