1. Git Log 문법

버전의 이력 목록을 볼 수 있는 Git Log 문법이다.

1.1 Git Log - 시간순 Commit 이력

git log

git log 명령을 사용하면 저장소의 commit 이력을 시간순으로 볼 수 있다. 각 commit은 다음과 같은 정보를 포함한다.

  • 해시 코드 (commit ID): commit을 식별하는 고유한 해시 코드로 각 commit은 고유한 해시 코드를 가지고 있어서 이를 사용하여 특정 커밋을 참조할 수 있다.

  • Commit한 사람의 정보: commit을 수행한 사용자의 정보로 일반적으로는 이름과 이메일 주소가 표시된다.

  • 언제 commit 했는지: commit한 시간과 날짜가 표시된다. 이를 통해 각 commit이 언제 발생했는지를 확인할 수 있다.

  • Commit 메시지: commit 메시지는 commit을 설명하는 짧은 메시지이다. 일반적으로 commit 메시지는 해당 commit이 어떤 변경 사항을 수행했는지를 간략하게 설명한다.

위의 이미지와 같이 Git의 log 명령어를 사용하여 commit log를 확인할 때, 터미널에서는 화면에 한 번에 표시할 수 있는 내용이 한정되어 있다. 그 결과, commit이 많은 경우 모든 log를 한 번에 표시할 수 없다.

이러한 경우, 일반적으로 로그를 확인하는 터미널에서는 페이지 단위로 로그를 보여줍니다. 추가로 로그를 보려면 Enter 키를 누르면 되고, 이 과정을 반복하여 모든 로그를 확인할 수 있다. 마지막에 (END)라는 표시가 나타나면 해당 페이지의 끝에 도달했다는 것을 나타낸다. 로그를 모두 확인하고 나서는 터미널에서 빠져나오기 위해 :q 또는 q 키를 누르면 된다. 이렇게 하면 Git 로그를 확인하는 작업을 종료하고 terminal에서 나올 수 있다.

1.2 Git Log - 최근 Commit 개수 지정

git log -2

HEAD는 현재 작업 중인 branch의 가장 최신 commit을 가리키는 포인터다. 보통 최신 commit을 나타내며, 새로운 commit이 이루어지면 HEAD는 해당 commit을 가리키게 된다.

1.3 Git Log - 생략할 Commit 개수 지정

git log --skip 5

1.4 Git Log - Commit 마다 변경 내용 출력

Commit 마다 변경 내용이 다르기에 log에서 무슨 내용이 달라졌는지 보고싶을 때 쓰는 명령어이다.

git log -p

Git에서 diff는 두 가지 상태나 지점 사이의 변경 사항을 보여주는 명령이다.

1.5 Git Log - 한줄로 출력

로그가 너무 길어 간단하게 보고싶을 때 쓰이는 명령어이다.

git log --oneline

1.1에서 길었던 해쉬코드가 7자리로 짧아진다. git 버전을 해쉬코드의 전체 길이가 아닌 7자리수로 구분할 수 있다.

Git의 commit 해시 코드는 위에서 1.1을 참고하면 기본적으로 길다. 그러나 보통 Git에서는 해시 코드의 앞 7자리를 사용하여 commit을 구분합니다. 충분히 유일한 식별자를 제공하면서도 간결하고 사용하기 쉽기 때문이다. 예를 들어, 1a3b5c7과 같이 7자리로 줄여진 해시 코드를 사용하여 commit을 식별할 수 있다.

1.6 Git Log - 사용자 정보로 검색

프로젝트가 오래되었고 사용자가 많을 시 어떠한 사용자가 commit을 했는지 궁금할 때 쓰이는 명령어이다.

git log --author=<user_name or user_email>

아래의 이미지처럼 만약 사용자 정보가 정확하지 않아도 일부분만 일치한다면 Git은 부분 검색을 통해 사용자를 찾아낼 수 있다.

1.7 Git Log - 파일 변경 내용으로 검색

사용자 말고 이 code line을 누가 commit 했는지 모를겠는데 이 파일에서 이 코드가 에러가 나서 이걸 누가 작업 했는지 코드 변경사항 내용으로 검색할 때 쓰이는 명령어이다.

git log -S <검색어>

또는

git log -p -S <검색어> #-p를 사용하면 파일의 변경 사항(diff)를 하나씩 살펴보겠다.

1.8 Git Log - Commit Message로 검색

너무 오래된 프로젝트일 경우 commit message가 많이 쌓여있어 commmit message를 검색해서 log를 찾을 수 있는 명령어이다.

git log --grep <검색어>

2. Git Log 테스트

1) Git Repository 만들기

HelloGit % cd ..
git_ws % mkdir log_project
git_ws % cd log_project
log_project % git init

log_project % git status

2) 빈 파일 생성 후 Add 하기

log_project % touch test.txt
log_project % git add test.txt
log_project % git status

3) Commit 하기

log_project % git commit -m "initialize" #초기화했다는 메시지 남기기

log_project % git status

4) 파일 수정

log_project % cat > test.txt #Commit 상태에서 수정이 되었기에 Unstaged 상태
one # ctrl+D
log_project % cat test.txt #cat으로 출력하기
log_project % git status

5) Staged 상태로 바꾸고 다시 Commit 하기

log_project % git commit -m "first commit" test.txt #test.txt 파일을 명시를 해줬기 때문에 -a 옵션을 주지 않아도 이 파일에 한해서는 Staged 생략하고 바로 commit이 가능하다.

log_project % git status

6) 두번째 수정하기

log_project % cat >> test.txt
two #ctrl+D
log_project % cat test.txt

log_project % git commit -m "second commit" test.txt

log_project % git status

git log를 통해 commit이 3개가 된걸 확인할 수 있다.

7) 세번째 수정하기

log_project % cat >> test.txt
three #ctrl+D
log_project % cat test.txt

log_project % git commit -m "third commit" test.txt

log_project % git status

8) Log 확인하기

  • 전체 log 확인하기
log_project % git log

  • 한줄 log 확인하기
log_project % git log --oneline

  • 최근 log 두개까지 확인하기
log_project % git log -2

  • 최근 log 두개를 한줄로 확인하기 (혼용해서 사용 가능)
log_project % git log -2 --oneline

  • 최근 log 두개의 변경사항 한줄로 확인하기
log_project % git log -p -2 --oneline

  • 생략할 commit 2개 한줄로 최신사항 확인하기
log_project % git log --skip 2 --oneline -1

  • 파일 변경 사항 검색하기
log_project % git log -S two --oneline -p
#해설: 파일이 two로 변경된 것을 한줄로 -p(diff)도 검색하기

  • Commit message로 검색하기
log_project % git log --grep first -p

  • 특정 사용자의 Commit 검색하기
log_project % git log --grep first --author=yeji4175

profile
거북선통통통통

0개의 댓글