GIT의 기초




개요


깃을 사용하는데에 있어 필수적인 명령어들과 기초적인 요소들을 알아보겠다.




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시킨다.






커밋 템플릿


feat: 새로운 기능을 추가할 경우 fix: 버그를 고친 경우 docs: 문서 수정한 경우 style: 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우 refactor: 프로덕션 코드 리팩터링 test: 테스트 추가, 테스트 리팩터링 (프로덕션 코드 변경 없음) chore: 빌드 테스크 업데이트, 패키지 매니저 설정할 경우 (프로덕션 코드 변경 없음)