개요
깃을 사용하는데에 있어 필수적인 명령어들과 기초적인 요소들을 알아보겠다.
Git 저장소 만들기
git 저장소를 만들 수 있는 방법은 로컬 디렉토리를 저장소로 만들거나 git 저장소를 clone하는 방법이 있다.
로컬 디렉토리를 git 저장소로
git init
을 터미널에 치면 된다. 이 명령어는 .git
폴더를 만드는데 .이 붙으면 숨김폴더이므로 보이지 않는 것이 정상이다.
로컬 디렉토리 위치에서 git init
을 터미널에 친 후 다음과 같이 바뀌면 잘 수행 된것이다.
![](https://user-images.githubusercontent.com/79088896/128273272-c2465ac7-61a1-49c0-9cb4-580c603c35ac.png)
기존 git 저장소를 Clone하기
git clone [url]
명령으로 저장소를 Clone한다.
![](https://user-images.githubusercontent.com/79088896/128273878-408a5b52-8d81-404c-8b12-44a9a0f5fd41.png)
수정하고 저장소에 저장하기
워킹 디렉토리의 모든 파일은 특정 상태 중 하나를 가진다.
![](https://user-images.githubusercontent.com/79088896/128274930-d815366f-254e-4cb7-892a-1868900b792d.jpg)
Untracked
: 디렉토리의 파일들 중에서 저장소에 저장하지 않을 파일들을 말한다. 스냅샷에도, Staging Area에도 포함되지 않은 파일들tracked
: 디렉토리에 파일들 중에서 저장소에 저장되었거나 저장될 파일들을 말한다. 스냅샷에 포함되었던 파일들Unmodified
: clone 했을 때의 상태이다. 스냅샷에 포함되어있지만 수정하지 않은 상태modified
: 수정한 상태이다.Staged
: 커밋되기 전 상태이다. 이 상태여야만 커밋이 가능하다.
파일을 새로 추적하기
git add
명령어를 사용하여 추적할 수 있다.
git status
명령어를 사용하면 파일의 상태를 확인할 수 있다.
![](https://user-images.githubusercontent.com/79088896/128275958-c09a325b-4da0-42a4-b8f4-4faba65fc17d.png)
“Changes to be committed”에 들어 있는 파일은 Staged 상태라는 것을 의미한다.
Modified 상태의 파일을 Stage하기
![](https://user-images.githubusercontent.com/79088896/128276457-3ffb70b4-f0b7-4a9f-8498-7dd0684ef4f5.png)
hello 파일의 내용을 수정하고 파일의 상태를 보면 Modified
상태이다. 파일을 새로 추적할 때처럼 git add
를 사용하여 staged상태로 만든다.
파일 무시하기
저장소가 만들어져있는 디렉토리에 .gitignore
파일을 만들고 그 안에 무시할 파일 형태를 적어주면 된다.
https://github.com/github/gitignore .gitignore의 예시들이다.
파일 삭제하기
git에서 파일을 제거하고 싶다면 git rm
명령으로 Staging Area에 있는 파일을 삭제한 후에 커밋을 하면된다.
이 명령은 로컬 디렉토리의 실제 파일도 지워진다.
![](https://user-images.githubusercontent.com/79088896/129464594-8d7d3e38-a0ac-4eab-9d77-7bd1b8f5c88c.png)
그렇다면 로컬 디렉토리의 파일은 지우지 않고 Staging Area에 있는 파일만 지우고 싶다면 어떻게 해야할까?
git rm --cached
명령을 사용하면 된다.
![](https://user-images.githubusercontent.com/79088896/129464649-1c76186c-4161-4d3f-86b4-962d8833ae59.png)
커밋하기
git add
명령으로 staged 상태가 된 파일들을 git commit
명령으로 커밋한다.
-m
옵션을 붙이면 커밋 메시지를 인라인으로 첨부할 수 있다.
![](https://user-images.githubusercontent.com/79088896/129464497-4caf47ce-2f6c-47c8-b852-535d2ca34251.png)
staged 상태였던 hello파일을 커밋한 것을 볼 수 있다.
커밋 덧붙이기
너무 일찍 커밋했다면 --amend
옵션이 도움이 될 것이다.
이 옵션을 붙여서 커밋을 하면 마지막 커밋과 같은 커밋 내용으로 기록된다.
![](https://user-images.githubusercontent.com/79088896/129464983-21f60340-8965-46e5-9761-896200227c6d.png)
커밋 히스토리 조회하기
저장소의 커밋 내역들을 보고 싶을 때는 git log
명령어를 이용하면 된다.
![](https://user-images.githubusercontent.com/79088896/129464744-d5637f10-a8a2-483f-86ed-a851e68a38e2.png)
각 커밋마다 변경 내용들을 보고 싶을 수가 있다. 그때는 -p
옵션을 주면 각 커밋의 diff 결과를 보여준다. 추가로 -2
옵션을 주면 가장 최근의 두개의 결과만 보여준다.
![](https://user-images.githubusercontent.com/79088896/129464798-0a639aaf-7272-45ed-99be-52869e09c6ac.png)
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]
명령을 사용하면 된다.
![](https://user-images.githubusercontent.com/79088896/129465205-febb4daa-aebc-4f27-9a75-0cb00c40cd22.png)
저장소 자세히 보기
리모트 저장소를 구체적으로 보고 싶다면 git remote show [리모트 저장소 이름]
을 사용하면 된다.
![](https://user-images.githubusercontent.com/79088896/129465247-4e2149b8-860f-408d-b71f-8fb93b6e3935.png)
저장소 이름 바꾸기
리모트 저장소의 이름을 바꾸고 싶다면 git remote rename
명령을 사용하면 된다.
![](https://user-images.githubusercontent.com/79088896/129465287-967cd040-1bc9-472d-9090-2c3756446af1.png)
저장소 삭제
등록된 리모트 저장소를 삭제하고 싶다면 git remote rm
명령을 사용하면 된다.
![](https://user-images.githubusercontent.com/79088896/129465327-4ef12f8b-74c9-43a1-96f7-958b53ff9e4a.png)
리모트 저장소의 파일 관리하기
저장소에 저장하기
리모트 저장소에 커밋한 내용들을 저장하고 싶다면 git push [리모트 저장소 이름] [브랜치 이름]
을 사용하면 된다.
![](https://user-images.githubusercontent.com/79088896/129465593-8e5a0ea7-18b8-4ca8-8033-3e89c09e78b1.png)
저장소의 파일 가져오기
리모트 저장소의 파일을 가져오고 로컬 디렉토리에 적용하고 싶다면 git pull [remote-name]을 사용하면 된다.
이 명령은 클론한 저장소의 데이터를 가져오고 자동으로 현재 작업하는 코드와 Merge시킨다.
![](https://user-images.githubusercontent.com/79088896/129465726-ccb6c94e-4f6d-4a92-a8a7-376a92dfd6b6.png)
커밋 템플릿
feat: 새로운 기능을 추가할 경우 fix: 버그를 고친 경우 docs: 문서 수정한 경우 style: 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우 refactor: 프로덕션 코드 리팩터링 test: 테스트 추가, 테스트 리팩터링 (프로덕션 코드 변경 없음) chore: 빌드 테스크 업데이트, 패키지 매니저 설정할 경우 (프로덕션 코드 변경 없음)