낙서장이자 오답 노트이자 컨닝 페이퍼

Git을 공부해보자: 분석과 디버깅(log, diff, blame, bisect) 본문

git & github

Git을 공부해보자: 분석과 디버깅(log, diff, blame, bisect)

NangIn 2023. 11. 30. 14:39
인프런에서 "제대로 파는 Git & GitHub - by 얄코"를 보고 정리한 내용입니다!

git log

git log 옵션들

각 커밋마다의 변경사항 함께 보기

git log -p

최근 n개 커밋만 보기

git log -(갯수)

통계와 함께 보기

git log --stat
  • 더 간략히: --shortstat

한 줄로 보기

git log --oneline
  • --pretty=oneline --abbrev-commit의 줄임말

변경사항 내 단어 검색

git log -S (검색어)
  • George로 검색

커밋 메시지로 검색

git log --grep (검색어)

 

자주 사용되는 그래프 로그 보기

git log --all --decorate --oneline --graph
  • --all: 모든 브랜치 보기
  • --graph: 그래프 표현
  • --decorate: 브랜치, 태그 등 모든 레퍼런스 표시
    • --decorate=no
    • --decorate=short: 기본
    • --decorate=full

로그 포맷팅

로그를 포맷팅 할 수 있다.

git log --graph --all --pretty=format:'%C(yellow) %h  %C(reset)%C(blue)%ad%C(reset) : %C(white)%s %C(bold green)-- %an%C(reset) %C(bold red)%d%C(reset)' --date=short

alias로 사용하기

git config --global alias.lg "log --graph --all --pretty=format:'%C(yellow) %h  %C(reset)%C(blue)%ad%C(reset) : %C(white)%s %C(bold green)-- %an%C(reset) %C(bold red)%d%C(reset)' --date=short"
git lg

 

git diff

변경사항을 확인하는 명령어

git diff 옵션들

워킹 디렉토리의 변경사항 확인

git diff

파일명만 확인

git diff --name-only

스테이지의 확인

git diff --staged
  • --cached와 같음

커밋 간의 차이 확인

git diff (커밋1) (커밋2)
  • 커밋 해시 또는 HEAD 번호로
  • 현재 커밋과 비교하려면 이전 커밋만 명시

브랜치 간의 차이 확인

git diff (브랜치1) (브랜치2)

 

git blame

각 라인의 작성자를 확인한다.

git blame 옵션들

파일의 부분별로 작성자 확인

git blame (파일명)

특정 부분 지정해서 작성자 확인

git blame -L (시작줄) (끝줄, 또는 +줄수) (파일명)

GitLens

깃렌즈를 사용하면 간단하게 볼 수 있다.

 

git bisect

이진 탐색 알고리즘으로 문제의 발생 시점을 찾아낸다.

이진 탐색 시작

git bisect start

오류 발생 지점임을 표시

git bisect bad

의심 지점으로 이동

git checkout (해당 커밋 해시)

오류 발생 않을 시 양호함 표시

git bisect good

💡참고사항

원인을 찾을 때까지 반복: git bisect good/bad

이진 탐색 종료

git bisect reset