개요
깃을 사용하는데에 있어 필수적인 명령어들과 기초적인 요소들을 알아보겠다.
Git 저장소 만들기
git 저장소를 만들 수 있는 방법은 로컬 디렉토리를 저장소로 만들거나 git 저장소를 clone하는 방법이 있다.
로컬 디렉토리를 git 저장소로
git init
을 터미널에 치면 된다. 이 명령어는 .git
폴더를 만드는데 .이 붙으면 숨김폴더이므로 보이지 않는 것이 정상이다.
로컬 디렉토리 위치에서 git init
을 터미널에 친 후 다음과 같이 바뀌면 잘 수행 된것이다.

기존 git 저장소를 Clone하기
git clone [url]
명령으로 저장소를 Clone한다.

수정하고 저장소에 저장하기
워킹 디렉토리의 모든 파일은 특정 상태 중 하나를 가진다.

Untracked
: 디렉토리의 파일들 중에서 저장소에 저장하지 않을 파일들을 말한다. 스냅샷에도, Staging Area에도 포함되지 않은 파일들tracked
: 디렉토리에 파일들 중에서 저장소에 저장되었거나 저장될 파일들을 말한다. 스냅샷에 포함되었던 파일들Unmodified
: clone 했을 때의 상태이다. 스냅샷에 포함되어있지만 수정하지 않은 상태modified
: 수정한 상태이다.Staged
: 커밋되기 전 상태이다. 이 상태여야만 커밋이 가능하다.
파일을 새로 추적하기
git add
명령어를 사용하여 추적할 수 있다.
git status
명령어를 사용하면 파일의 상태를 확인할 수 있다.

“Changes to be committed”에 들어 있는 파일은 Staged 상태라는 것을 의미한다.
Modified 상태의 파일을 Stage하기

hello 파일의 내용을 수정하고 파일의 상태를 보면 Modified
상태이다. 파일을 새로 추적할 때처럼 git add
를 사용하여 staged상태로 만든다.
파일 무시하기
저장소가 만들어져있는 디렉토리에 .gitignore
파일을 만들고 그 안에 무시할 파일 형태를 적어주면 된다.
https://github.com/github/gitignore .gitignore의 예시들이다.
파일 삭제하기
git에서 파일을 제거하고 싶다면 git rm
명령으로 Staging Area에 있는 파일을 삭제한 후에 커밋을 하면된다.
이 명령은 로컬 디렉토리의 실제 파일도 지워진다.

그렇다면 로컬 디렉토리의 파일은 지우지 않고 Staging Area에 있는 파일만 지우고 싶다면 어떻게 해야할까?
git rm --cached
명령을 사용하면 된다.

커밋하기
git add
명령으로 staged 상태가 된 파일들을 git commit
명령으로 커밋한다.
-m
옵션을 붙이면 커밋 메시지를 인라인으로 첨부할 수 있다.

staged 상태였던 hello파일을 커밋한 것을 볼 수 있다.
커밋 덧붙이기
너무 일찍 커밋했다면 --amend
옵션이 도움이 될 것이다.
이 옵션을 붙여서 커밋을 하면 마지막 커밋과 같은 커밋 내용으로 기록된다.

커밋 히스토리 조회하기
저장소의 커밋 내역들을 보고 싶을 때는 git log
명령어를 이용하면 된다.

각 커밋마다 변경 내용들을 보고 싶을 수가 있다. 그때는 -p
옵션을 주면 각 커밋의 diff 결과를 보여준다. 추가로 -2
옵션을 주면 가장 최근의 두개의 결과만 보여준다.

git log 옵션
옵션 | 설명 |
---|---|
%H | 커밋 해시 |
%h | 요약 커밋 해시 |
%T | 트리 해시 |
%t | 요약 트리 해시 |
%P | 부모 해시 |
%p | 요약 트리 해시 |
%an | 저자 이름 |
%ae | 저자 메일 |
%ad | 저자 시각 |
%ar | 저자 상대적 시각 |
%cn | 커밋한 사람 이름 |
%ce | 커밋한 사람 메일 |
%cd | 커밋한 사람 시각 |
%cr | 커밋한 사람 상대적 시각 |
%s | 요약 |
여기서 저자와 커밋한 사람의 차이가 궁금할 수 있다. 저자는 작업을 수행한 원작자이고 커밋한사람은 마지막으로 이작업을 저장소에 보낸 사람이다.
리모트 저장소
저장소 확인하기
리모트 저장소란 인터넷이나 네트워크에 존재하는 저장소를 말한다.
git remote -v
옵션을 이용하여 깃 저장소에 등록된 리모트 저장소의 URL을 확인할 수 있다.
저장소 등록하기
아무주소도 등록되있지 않다면 리모트 저장소를 추가해야한다.
git remote add [단축이름] [url]
명령을 사용하면 된다.

저장소 자세히 보기
리모트 저장소를 구체적으로 보고 싶다면 git remote show [리모트 저장소 이름]
을 사용하면 된다.

저장소 이름 바꾸기
리모트 저장소의 이름을 바꾸고 싶다면 git remote rename
명령을 사용하면 된다.

저장소 삭제
등록된 리모트 저장소를 삭제하고 싶다면 git remote rm
명령을 사용하면 된다.

리모트 저장소의 파일 관리하기
저장소에 저장하기
리모트 저장소에 커밋한 내용들을 저장하고 싶다면 git push [리모트 저장소 이름] [브랜치 이름]
을 사용하면 된다.

저장소의 파일 가져오기
리모트 저장소의 파일을 가져오고 로컬 디렉토리에 적용하고 싶다면 git pull [remote-name]을 사용하면 된다.
이 명령은 클론한 저장소의 데이터를 가져오고 자동으로 현재 작업하는 코드와 Merge시킨다.
