thumbnail
Git 시작하기(4)
Git / Github
2022.02.02.

첫 포스팅에서 git을 사용한다는 것은 프로젝트의 시간과 차원을 관리하는 것이라고 했다. 이번 포스팅에서는 먼저 시간 축을 이동하는 방법에 대하여 설명하고자 한다.

기본적인 개념들

먼저 시작하기전에 Git 작업영역, 파일상태, 명령어를 알고 시작하면 연습에 도움이 될 것 같다.

1. Git 작업영역

Git으로 관리를 할 때, 기본적으로 3가지 영역(원격저장소 제외)을 바탕으로 관리가 되게 된다.

Imgur

  • Working Directory(Working Tree) : 작업 중인 프로젝트 디렉토리
  • Staging Area : Commit 대기중인 곳 (git add .)
    • Q. 왜 바로 Commit하지 않고 Staging Area를 둘까?
      • A. 일부만 Commit해야할 때는 어떻게 해야할까?
      • A. 10개의 파일을 Merge해야하는 데, 그중 3개가 충돌이 일어나면 어떻게 해야할까?
  • Repository(Git Directory) : 최종 커밋까지 된 내역들이 저장되어있는 저장소 (git commit -m '(메시지)')

2. Git 파일상태

git status 명령어를 통해서 자주 보게되는 파일 상태는 4가지 단계로 나뉜다. Imgur

  • Untracked : 기존에 Git으로 관리되고 있지 않은 상태
  • Unmodified : Git으로 관리되지만 아무 변경사항 없는 상태
  • Modified : Git으로 관리되는데 변경이 일어난 상태
  • Staged : staging area에 있는 상태, git add .로 올리고나서 git commit 대기중

3. HEAD와 Branch

Git은 데이터를 Change Set이나 Diff로 기록하지 않고, 일련의 스냅샷으로 기록한다. 이때 일련의 스냅샷들(Commit들)을 가르키는 포인터가 Branch이고, 현재 작업중인 Branch를 가르키는 포인터가 HEAD이다. Imgur

일반적으로 Branch는 특정 Commit을 가리키고 HEAD는 이 branch를 가리킨다. 즉, “HEAD → Branch → specific Commit” 순서로 가리키는 것이 일반적이다.

이러한 정상적인 상태를 ‘Attached HEAD State’ 라고 한다. 만약 HEAD가 특정 Commit을 직접적으로 가리킨다면 ‘Detached HEAD State’ 라고한다.

4. 기본 명령어

git add .                       // Staging Area에 올리기
git commit -m  <커밋메시지 입력>  // -m 없으면 vim 열림
git commit -am <커밋메시지 입력>  // Modified 바로 Commit, Untracked 없을때만 쓰기
git log  // Commit 내역 확인하기
git diff // 변경사항 자세하게

원래 시간 축 이동에 대한 포스팅을 쓰고 있었는데 쓰다가보니 사전 개념설명이 넘 길어져서 다음 포스팅에 시간이동을 써야겠다…


참조

Thank You for Visiting My Blog, Have a Good Day 😆
© 2022 Engineer Haesim, Powered By Gatsby.