커밋히스토리 : 이때까지 한 커밋들
git log
: 커밋 히스토리를 출력
log : 기록, 일지
위로 올라갈수록 최근 commit 아래 :old
commit 뒤에 문자열의 의미 : 커밋아이디(각각의 커밋을 구별하기 위해 아이디로 관리) = 또는 커밋해시라고 표현합니다.
Author : 작성한 사람
Date : 날짜
커밋메시지
git log --pretty=oneline
: 커밋히스토리 깔끔하게 보기
=oneline
: 커밋당 한 줄씩
git show 커밋아이디
: 특정 커밋에서 어떤 변경사항이 있었는지 확인
(tip! : 커밋아이디 앞에 4자리정도만 써도 ok)
--- 해당커밋 이전의 모습
+++ 해당 커밋의 모습
코드 수정
git add .
git commit 해보기
새로운 창이 떴습니다.
Please enter .... 안내 문구 #으로 시작하는 커밋메시지에는 표시되지 않는다.
vim
이라는 편집 에디터가 뜹니다.
4. i
부르기 -> 편집모드
5. 커밋 메시지 작성
6. esc
+ :wq
7. git log 확인해보기
8. 커밋메시지 확인
-m 옵션 없이 git commit만으로 텍스트 에디터에 커밋 메시지 남기기
장점 : 복잡하고 긴 커밋 메시지를 쉽게 남길 수 있다!
" 코드를 수정하고 올릴걸,," or "커밋 메시지를 좀 더 자세하게 쓸걸"
이럴 때 최신 커밋을 수정해봅시다. 여기서 포인트는 새로운 커밋을 하려고하는게 아니라는점!
git commit --amend
: 최신 커밋 수정해서 다시 새로운 커밋으로 만들기
i
누르고 수정 후 esc
누른 후 :wq
git log --pretty=oneline
으로 확인해보기
커밋 메시지
: 1.커밋을 한 사용자 아이디 2. 커밋한 날짜,시간 3. 커밋 메시지
1) 커밋 메시지의 제목(title)과 상세 설명(body) 사이에는 한 줄을 비우기.
2) 커밋 메시지의 제목 뒤에 온점(.
)을 붙이지 말기.
3) 제목의 첫 번째 알파벳은 대문자로 작성하기.
4) 커밋 메시지의 제목은 명령조로 작성하기( ex) Fix it / Fixed it/ Fixes it)
5) 커밋의 상세 내용에는 이런 걸 적기.
- 왜 커밋 했는지
- 어떤 문제가 있었는지
- 적용한 해결책이 어떤 효과를 가지는지
6) 다른 사람들이 자신의 코드를 바로 이해할 수 있다고 가정하지 말고 최대한 친절하게 작성.
1) 하나의 커밋에는 하나의 수정사항, 하나의 이슈(issue)를 해결한 내용만 남기도록하세요.
다양하게 수정하고나서 하나의 커밋으로 남기는 것은 좋지 않습니다.
-커밋 간의 독립성이 사라지지 않게 너무 많은 작업의 결과를 하나의 커밋으로 담지 말기!
2) 현재 프로젝트 디렉토리 상태가 그 내부의 전체 코드를 실행했을 때 에러가 발생하지 않는 상태인 경우에만 커밋을 하도록하세요.
나중에 다시 봤을 때 이해하는데 어려움이 없도록, 다른 동료 개발자와 협업하는 데 방해가 되지 않도록
aliasing
: 커맨드 전체에 별명을 붙여서 그 별명(alias)을 사용할 수 있도록 해주는 기능
git config alias.별명 커맨드
: 길이가 긴 커맨드에 별명으로 해당 커맨드를 실행할 수 있도록 설정
- git log --pretty=oneline을 git history라는 별명으로 설정하기
-> git congfig alias.history 'log --pretty=oneline'
참고하기 : https://johngrib.github.io/wiki/git-alias/
git diff [이전의 커밋 아이디] [그이후의 커밋아이디]
: 두 커밋 간의 차이 비교
git show랑 비슷합니다.
HEAD
: 어떤 커밋을 가리킴. 보통 가장 최근에 한 커밋을 가리킴.매번 더 새로운 커밋을 가리킴
working directory/ working tree -> HEAD가 가리키는 커밋에 따라 구성됩니다.
cat으로 확인해보기 (최신 모습이죠!)
git reset [옵션] [커밋아이디]
: 옵션에 따라 하는 작업이 달라짐(옵션 생략하면--mixed
옵션 적용됨)
최신 커밋을 가리키는 거에서 이전 커밋을 가리키게 설정하기
git reset --hard [가고싶은 커밋아이디]
git reset
: HEAD가 과거의 커밋을 가리키게 할 수 있다. working directory의 내용도 과거의 커밋의 모습으로 돌아가게 한다.
과거 커밋으로 아예 돌아가고 싶을 때
staging area에 있던 것들은 커밋을 하더라도 그것과 상관없이 계속 남아있습니다.
계속 git add할 때마다 staging area에서는 새로운 파일이 추가되거나 원래 있던 파일이 더 새로운 버전의 것으로 교체되거나 할 뿐입니다.
--soft
--mixed
--hard
- HEAD가 과거의 특정 커밋을 가리키도록한다.--soft는 여기까지
- staging area를 과거의 특정 커밋의 내용과 똑같게 만든다.--mixed 는 여기까지
- working directory를 과거의 특정 커밋의 내용과 똑같게 만든다.--hard는 여기까지
git reset --hard HEAD^
HEAD^ : 현재 HEAD가 가리키고 있는 커밋의 바로 이전 커밋을 나타냅니다.
git reset --hard HEAD~2
HEAD~2 : 현재 HEAD가 가리키는 커밋보다 2단계 전에 있는 커밋을 나타냅니다.
tag
: 보통 프로젝트에서 주요 버전의 시작점이 되는 커밋에 태그를 답니다. ex) Version2 Version1
git tag [태그이름] [커밋아이디]
: 특정 커밋에 태그를 붙임 ex)git tag Version_1 84ab
git tag
: 모든 태그 조회하기.
git show [태그이름]
: 태그와 연결된 커밋 보기 ex)git show Version_1