처음 Git을 사용했을때 기본 개념을 몰라서 많이 헷갈렸었다
몸으로 익힌부분을 책을 보며 다시 정리해 보았다

  • Git 동작 흐름
수정 → (Working Directory)
   git add → (Staging Area)
      git commit → (Repository)
  • Git 은 크게 workingstage로 레포지토리를 나눈다

Git의 구조

✅ 워킹 디렉토리(Working Directory)

  • 실제로 파일을 수정하거나 만드는 현재 작업 중인 공간
  • 워킹 트리 (Working Tree) 라고도 함
  • 버전관리시스템(VCS)는 저장공간을 논리적으로 분리한다
  • git status: 추적되지 않은(untracked) 파일이나 변경된(modified) 파일을 확인

    워킹 디렉토리                      스테이지 영역
        |                               |
        | git add filename              |
        |------------------------------>|
        | tracked                       |
        |                               |
        |<------------------------------|
        |                     untracked |
    

✅ 스테이지 영역 (Stage Area)

  • 워킹 디렉토리에서 커밋할 파일을 잠시 보관하는 임시 저장 공간
  • git add: 워킹 디렉토리의 파일을 스테이징 영역에 올림(tracked 상태)
  • 스테이지 영역에 올라간 파일만 git commit 시 커밋 대상이 된다

    워킹 디렉토리                스테이지 영역
        |                         |
        |tracked                  |
        |-----------------------> |
        |                         |
        |                         |
    
  • unmodified : 추적 상태이면서 스테이지에서 한번도 수정하지않은 원본 상태
  • staged 상태 : 워킹 디렉토리의 파일과 스테이지의 파일 상태가 같은 변경사항이 없는 경우
  • unstage 상태 : 워킹 디렉토리에서 수정한 내용이 스테이지와 다르면 Git은 해당 파일을 modified로 봄

stage에서 unmodified 상태라면 git은 파일 수정여부를 확인하고, 갱신 작업 여부를 알려준다

워킹 디렉토리    unmodified     modified       스테이지 영역
    |             |             |                |
    |---tracked---|-------------|--------------->|
    |             |             |                |
    |             |             |<----modified---|
    |             |             |                |
    |             |--modified-->|----re-stage--->|
    |             |             |                |
명령어 설명
git add 파일을 tracked 상태로 변경
git status
git ls-files –stage
파일들의 스테이지 상태를 확인
git commit 스테이지에 임시로 저당된 파일을 스냅샷으로 기록
  • stage를 별도로 운영하는것은 커밋을 빠르게 처리 하기위해서이다

✅ 레포지토리(Repository)

  • git commit 명령어 실행시, staging area에 있던 파일들이 이곳에 기록
  • 이 저장소에 저장된 버전은 git log로 확인 가능
  • git push로 원격 저장소에 보낼 수 있다

1. Git의 파일 상태 추적(tracked)

Git의 VCS는 지정된 파일들의 모든것을 추적하고 관리하는 시스템이다
워킹 디렉토리에 존재하는 파일들은 tracked(추적됨)untracked(추적되지않음) 상태로 구분된다

  • 상태 변화 흐름
    Untracked → Tracked → Modified → Staged → Committed
    

untracked

  • 새로 생성한 워킹 디렉토리 안의 실제 작업중인 파일은 모두 untracked 상태이다
  • 이 파일들을 관리하기위해서는 git에 추적하도록 명령해야한다
  • 추적을 하고싶지않은 파일은 .gitignore를 사용해서 따로 추적하지 않게 할 수 있다

tracked

  • 워킹 디렉토리에 새로운 파일을 추가하면 untracked(추적되지않음) 상태이다
  • 이 파일들은 별도의 명령어를입력하여 tracked(추적) 상태로 변경해주어야한다
  • git add : 파일 또는 파일의 변경사항을 스테이지 영역에 올림(다음 커밋에 포함시켜달라)
명령어 설명
git add 파일명 단일 파일
git add . 전체 파일
   

2. Git의 상태 확인

  • 각 저장영역에서 발생하는 변화를 감지하고 상태메세지를 출력
  • git status : git의 상태 메시지를 확인

    > git status
    
    > No commits yet # 커밋이 없음
    > nothing to commit # 변경된 내용이 없음
    

3. Git의 파일 무시

git은 tracked 상태의 모든 것(디렉터리 전체)을 추적한다
이는 공유되면 안되는 파일들까지 추적해서 공유되기때문에 별도로 분리해서 관리해야한다
이때 사용하는것이 .gitignore 설정 파일이다

.gitignore

  • .이 앞에 붙어 숨겨진 파일로 관리
  • 저장소(폴더)의 최상위 디렉토리에 존재해야한다
  • 이 파일에 작성된 목록들은 git에서 추적하지 않음

표기법

  • / : git에서 디렉토리를 표현할때 사용하는 기호
  • git은 정규표현식을 사용하여 작성 규칙을 넣을 수도 있다
표기법 설명
파일명.확장자 해당 파일을 제외
*.확장자 확장자형식의 파일은 모두 제외
!파일명.확장자 해당파일은 제외하지 않음
/파일명.확장자 현재 디렉터리 안의 파일은 무시
/폴더명/ 디렉터리안의 모든 것을 무시
폴더명/*/.확장자 폴더명 디렉토리 안의 모든 .확장자 파일을 무시

태그:

카테고리:

업데이트:

댓글남기기