아래 내용은 Pluralsight의 Master Git, 누구나 이해할 수 있는 Git 입문, 생활코딩 지옥에서 온 Git의 내용을 토대로 정리한 내용입니다.
1. 정방향 흐름(코드를 수정하고 repository에 반영하는 과정)
- Working Directory 에서 파일 수정
- index 영역, repository영역에는 반영되지 않은 상태
git diff
명령어로 변경점 확인 가능
git add [파일명 또는 경로 복수지정가능]
명령어 실행- Working Directory와 Index영역이 동기화 됨, repository영역에는 반영되지 않은 상태
git diff
명령어로는 변경점이 확인 되지 않음git diff --cached
명령어로 Index영역과 repository영역을 비교할 수 있음
git commit
명령어 실행- Index와 repository영역이 정보가 동기화 되면서 3가지 영역의 데이터가 모두 동기화됨
git diff
명령어와git diff --cached
명령어로는 변경점이 없음
2. 역방향 흐름(repository의 다른 Branch의 수정 정보를 가져와 작업 영역에 반영하는 과정)
- 현재 프로젝트가 가지고 있는 브랜치의 정보를 확인하는 명령어
$ git branch
lisa
* master
nogood
spaghetti
- 다른 Branch와의 코드 비교
$ git diff 비교대상브랜치명1 비교대상브랜치명2
- 다른 브랜치로의 변경
$ git checkout 대상브랜치
- 다른 브랜치로의 변경 후 동작
- repository에는 commit위치를 가리키는 HEAD라는 포인터가 있는데 브랜치가 변경되면서 HEAD 위치가 변경됨
- Index와 Working Directory에도 동시에 반영됨
-
- commit 되지 않고 수정되거나 추가된 파일은 유지됩니다.
3. Index에서 파일 삭제
git add
명령어로 Index영역에서 파일을 추가한 후에 되돌려서 Index영역에서만 삭제하여git add
명령어 실행 전으로 되돌릴 때
$ git rm --cached 파일명
git add
명령어로 추가한 파일은 옵션 없는git rm 파일명
은 에러 발생