Git을 잘 써보자- 3. 기본적인 작업 흐름

아래 내용은 Pluralsight의 Master Git, 누구나 이해할 수 있는 Git 입문, 생활코딩 지옥에서 온 Git의 내용을 토대로 정리한 내용입니다.

1. 정방향 흐름(코드를 수정하고 repository에 반영하는 과정)

  1. Working Directory 에서 파일 수정
    • index 영역, repository영역에는 반영되지 않은 상태
    • git diff 명령어로 변경점 확인 가능
  2. git add [파일명 또는 경로 복수지정가능] 명령어 실행
    • Working Directory와 Index영역이 동기화 됨, repository영역에는 반영되지 않은 상태
    • git diff 명령어로는 변경점이 확인 되지 않음
    • git diff --cached 명령어로 Index영역과 repository영역을 비교할 수 있음
  3. git commit 명령어 실행
    • Index와 repository영역이 정보가 동기화 되면서 3가지 영역의 데이터가 모두 동기화됨
    • git diff명령어와 git diff --cached 명령어로는 변경점이 없음

2. 역방향 흐름(repository의 다른 Branch의 수정 정보를 가져와 작업 영역에 반영하는 과정)

  1. 현재 프로젝트가 가지고 있는 브랜치의 정보를 확인하는 명령어
$ git branch           
  lisa
* master
  nogood
  spaghetti
  1. 다른 Branch와의 코드 비교
$ git diff 비교대상브랜치명1 비교대상브랜치명2
  1. 다른 브랜치로의 변경
$ git checkout 대상브랜치
  1. 다른 브랜치로의 변경 후 동작
    • repository에는 commit위치를 가리키는 HEAD라는 포인터가 있는데 브랜치가 변경되면서 HEAD 위치가 변경됨
    • Index와 Working Directory에도 동시에 반영됨
      • commit 되지 않고 수정되거나 추가된 파일은 유지됩니다.

3. Index에서 파일 삭제

  • git add 명령어로 Index영역에서 파일을 추가한 후에 되돌려서 Index영역에서만 삭제하여 git add명령어 실행 전으로 되돌릴 때
$ git rm --cached 파일명
  • git add 명령어로 추가한 파일은 옵션 없는 git rm 파일명 은 에러 발생