깃의 컨셉과 git add

최동혁·2022년 12월 9일
0

깃허브

목록 보기
3/9
post-thumbnail

깃의 Workflow

  1. working directory
  2. staging area
  3. .git directory
  • 깃에는 총 3가지의 작업 환경이 나누어져 있다.
  1. working directory
    • 프로젝트의 파일들을 수정하는 작업하고 있는 곳
  2. staging area
    • 버전 히스토리에 저장할 준비가 되어있으면 파일들을 옮겨 놓는 곳
  3. .git directory
    • 버전의 히스토리를 가지고 있는 git repository 혹은 git directory
  • 예를 들어 프로젝트의 폴더에서 파일들을 수정하고 있다가, 어느정도 준비가 된 파일들을 staging area로 옮긴다.
  • commit 이라는 명령어를 이용해 staging area에 있는 파일들을 git 버전 히스토리에 저장하게 된다.
  • 이렇게 git 버전 히스토리에 저장된 파일들은 checkout이라는 명령어를 통해 언제든지 이전 버전으로 돌아갈 수 있다.
  • 이렇게 저장된 git 히스토리는 내 컴퓨터에만 저장이 되기 때문에 컴퓨터에 문제가 생기면 저장한 히스토리들을 전부 잃어버림.
  • 그렇기 때문에 이런 히스토리를 내 컴퓨터에만 저장하는 것이 아닌, 깃허브와 같은 서버에 push라는 명령어를 통해 나의 git directory를 서버에 업로드 할 수 있다.
  • 그리고 서버에서 로컬로 파일들을 다운받고 싶을때는 pull 이라는 명령어를 통해 다운 받을 수 있다.

각 버전에 들어있는 정보들

  • 각각의 커밋에는 스냅샷된 정보들을 기반으로 해서 고유한 해시코드가 부가됨.
  • 이 id를 이용해 버전 정보를 참조할 수 있다.
  • 그리고 이 커밋에는 id 뿐만 아니라, 어떤 버전인지 버전과 관련된 메시지와 누가 작성했는지, 날짜와 시간 같은 정보들도 포함이 되어 있다.

working directory

  • working directory는 크게 두가지로 나뉠 수 있다.
  1. untracked
  2. tracked
  • 깃이 이미 알고 있는, tracking 하고 있는 파일이라면 tracked 카테고리에
  • 새로 만들어진 파일이거나, 기존에 존재하던 프로젝트에서 깃을 초기화하게 되면 untracked 카테고리로 나눈다.

또 traked는 2가지로 나눌 수 있다.

  1. modified
  2. unmodified

이전 버전과 비교해서

  • 수정이 되면 modified
  • 수정이 안되어 있는 상태면 unmodified

그래서 수정이 된 modified 파일들만 staging area로 옮겨 갈 수 있다.

staging area로 옮기기

  1. git init을 한 폴더 안에서 새로운 작업

  2. 새로운 폴더가 생기거나, 이미 존재하는 작업물에서 변경사항이 있는 경우?

    • git status를 하게 되면
    • 아직 commit 할 것들은 없지만, untracked 한 파일들이 있기 때문에 git add라는 명령어를 이용해 tracking을 하라고 말한다.
  3. 그래서 working directory에서 tracked 카테고리로 만들기 위해서는 git add 명령어를 이용해 옮길 수 있다.

    • git add . 을 하게 되면 변경된 파일들 전부를 옮김.
    • git add a.text 는 a.text라는 파일만 tracked 카테고리로 바뀐다.
    • a.text 파일은 tracked 카테고리로 바뀌었기 때문에, commit할 준비가 되어있는 변경사항으로 a.text가 새로운 파일로 나온다.
    • 모든 파일을 커밋할 준비가 되어있게 만들어준다.
    • 여기서 a.text 파일을 고치게 된다면?
    • 모든 파일이 전부 commit할 준비가 되었지만, a.text 파일이 수정되어 있다고 뜬다.
    • 왜냐면 tracked 카테고리로 분류되면서 깃이 a.text라는 파일을 이제 알고있는데, 알고있는것과 다르게 수정이 되었기 때문이다.

    • 소스트리로 볼 수 있다.
    • 만약 a, b, c를 전부 스테이지에 올렸다.
    • 그런데 a를 수정하면, 수정한 파일을 git add로 스테이지에 올리지 않았기 때문에 위의 그림처럼 뜨게 된다.
    • 다시 git add . 를 이용해 전부 스테이지 올린다.
    • 위의 그림처럼 뜨는데, 여기서 git rm --cached 를 이용해 다시 staging area에서 working directory로 옮겨갈 수 있다.
    • 전부 다 제거
    • status를 확인하면 아까 add를 하지 않은 상태로 된다.
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글