[ Git 저장소 만들기 ]
-
기존 디렉토리를 Git 저장소로 만들기
git init
-
다른 서버에 있는 저장소를 Clone하기
git clone
[ 수정하고 저장소에 저장하기 - git 에서의 파일의 LifeCycle ]
Working Directory의 모든 파일은 Tracked와 Untracked로 나뉘게 된다.
Tracked : 이미 스냅샷에 포함 되어 있던 파일. ( 즉, git의 관리 대상이 되는 파일 )
- Unmodified : 수정 되지 않음.
- Modified : 수정됨.
- Staged : 스냅샷에 추가 됨. 즉, 커밋할 파일에 변경 사항이 추가 되었다는 것을 의미한다.
Untracked : 아예 Git의 관리 대상이 아닌 파일
"Changes to be committed" 에 들어가 있는 파일은 Staged 상태에 들어와 있는 것들이다.
"Changes not staged for commit"에 들어가 있는 파일은 Tracked 상태이지만 아직 Staged 상태는 아닌 것을 의미한다.
핵심 : git add를 이해하자 !!
git add 명령은 파일을 새로 추적할 대도 사용하고 수정한 파일을 Staged 상태로 만들 때도 사용한다. Merge 할 때 충돌난 상태의 파일을 Resolve 상태로 만들 때도 사용한다.
add의 의미는 프로젝트에 파일을 추가한다기 보다는 다음 커밋에 추가한다고 받아 들이는 것이 좋다.
[ 파일 무시하기 - .gitigonre ]
.gitignore 파일은 보통 처음에 만들어 두는 것이 편리하다. 그래서 Git 저장소에 커밋하고 싶지 않은 파일을 실수로 커밋하는 일을 방지할 수 있다.
[ Staged 와 Unstaged 상태의 변경 내용을 보기 - git diff ]
git diff → Unstaged 상태의 파일 들만 비교한다.( 즉, working driectory의 파일들과 Staginf Area의 파일들을 비교한다. )
git diff -cached → 저장소에 커밋한 것과 Staging Area에 있는 것을 비교한다.
[ 변경 사항 Commit 하기 ]
→ git commit
[ 파일 삭제 하기 ]
Git 에서 파일을 삭제 제거하려면 git rm 명령으로 Tracked 상태의 파일을 삭제 한 후에(정확하게는 Staging Area에서 삭제하는 것) 커밋 해야 한다. 이 명령은 워킹 디렉토리에 있는 파일도 삭제하기 때문에 실제로 지워진다.
→ git rm
Staging Area에서만 제거하고 워킹 디렉토리에 있는 파일은 지우지 않고 남겨 둘 수 있다. 즉, 하드디스크에 있는 파일은 그대로 두고 Git만 추적하지 않게 한다.
→ git rm --cached
[ 파일 이름 변경하기 ]
git mv [ file_from - 이전 파일 이름 ] [ file_to-이후 파일 이름 ]
git mv README.md README 명령어는
- mv README.md README
- git rm README.md
- git add README
3개의 명령어를 수행 한 것과 완전히 같다.
[ 커밋 히스토리 조회하기 ]
git log
→ 포멧
→ 제한 조건을 이용한 옵션들이 존재한다.
[ 되돌리기 - Undo ]
한번 되돌리면 복구 할 수 없기 때문에 신중해야 한다.
-
완료한 커밋을 수정해야 할 때 ( 덮어 쓰기 )
→ git commit —ammend
-
파일 상태를 Unstage 상태로 변경하기
→ git reset HEAD
-
Modified file 되돌리기
→ git checkout —
→ git checkout — [file]명령은 원래 파일로 덮어 쓰는 것이기 때문에 수정한 내용은 전부 사라진다. 수정한 내용이 진자 마음에 들지 않을 경우에만 사용하도록 하자.
-
Git 으로 커밋한 모든 것은 언제나 복구 할 수 있다. 하지만 커밋하지 않고 잃어버린 것은 절대로 되돌릴 수 없다.