Commit History 출력해보기

hwstar·2024년 7월 16일

Git & GitHub

목록 보기
2/2
post-thumbnail

앞에서 살펴본것과 같이 working directory 에서 여러 파일을 추가, 수정 하고 스테이징하여 staging area에 놓이게된다.
여기에서 커밋을 하게되면 repository에 등록이 되면서 커밋 기록이 남게된다.

여러 작업을 하고 커밋을 해놓으면 기록들이 쌓이게 되는데
이때 이전에 작업한 내용의 기록을 보고싶은 경우에 사용되는 명령어들을 소개하겠다.

아래의 개념을 알면 이해하기 쉽겠지만 자세히 설명하지는 않겠다.
HEAD, master, origin/master, origin/HEAD 개념
HEAD, master, 커밋 해시 : 모두 특정 커밋을 직, 간접적으로 참조하고 있는 개체이다.

➡️ 이를 통해 특정 커밋 기록을 보거나 비교하거나 변경 사항을 되돌리는 등 여러 명령어에서 사용할 수 있다.

1. git log

저장소에 기록된 커밋 히스트리를 출력하는 명령어
시간역순으로 정렬하여 보여줌으로 최근 커밋 기록부터 상단에서 보여준다.

git log -[출력할 커밋 수]

: 최근 커밋 수를 지정하여 로그 출력
만약 모든 커밋 기록이 아니라 최근 몇 가지만 보고싶은 경우 옵션으로 지정할 수 있다.

ex) git log -1

git log -p

: 각 로그의 상세 정보를 출력한다. git log --patch와 같은 명령어이다.

git log -p -[출력할 커밋 수]

: 최근 커밋 수를 지정하여 로그의 상세 정보 출력
동일한 파일에서 코드 변경 사항(diff) 등 추가적인 상세 정보를 제공한다.

ex) git log -p -1

git log --pretty=oneline

: 커밋 히스토리를 한 줄로 정리되어 출력한다.
여러 커밋의 내용을 커밋 메시지로 구분하여 한눈에 볼 때 유용하다.

git log --oneline

: 커밋 ID 값의 7번째 까지만 커밋 히스토리를 한줄로 출력
위와 다른점은 커밋 해시값의 일부만 출력하는 점만 다르다.

git log --oneline --graph

: 커밋 히스토리를 한줄로 그래프와 함께 출력

ex) graph를 시각적으로 보여주기위해 'devdev'라는 branch를 만들어서 작업한 후 merge한 경우이다.

2. git show

: 특정 커밋의 상세정보 출력
여러 커밋 히스토리를 출력하는 git log -p 명령어와 특정 하나의 커밋 정보를 출력하는점에서 다르다.
모든 커밋은 커밋 해시값을 가지고 있으므로 특정 커밋을 지정할 수 있다.

git show [커밋 해시]

: 특정 커밋 해시에 대한 상세정보를 출력함

'devdev' branch에서 작업한 내용을 출력해보았다.

ex) git show 9c82462

git show HEAD

: HEAD가 참조하는 커밋의 상세정보를 출력함
커밋 해시값을 항상 기억하기는 힘들수 있는데 이때 HEAD가 참조하고 있는 커밋의 상세정보를 출력 가능하다.

위에서 graph를 출력한 결과에서 보면 HEAD가 가리키고 있는 커밋의 상세정보를 출력한 것이다.

HEAD를 기준으로 이전 커밋 기록을 출력하고 싶은 경우도 있을 수 있다.

HEAD 바로 이전 커밋 기록의 상세 정보를 출력한다.

  • git show HEAD^^^
    이렇게 HEAD 기준 3단계 이전의 기록을 출력도 가능하다.
  • git show HEAD~n
    HEAD를 기준으로 여러 이전 단계의 커밋 정보만 보고싶을때 사용할 수 있다.

3. git diff

파일의 수정, 변경 사항을 git show 명령어 출력되는 비교보다 더 특화된 명령어이다.

git diff

: Working Directory의 변경 사항과 최근 커밋의 내용을 비교

git diff --staged

: Staging Area의 내용과 최근 커밋 내용을 비교

git diff [변경 전 커밋 해시][변경 후 커밋 해시]

: 두 커밋 기록간의 변경 사항 비교

느낀점

git에서 파일의 상세 정보와 변경 사항들을 명령어를 통해 확인 할 수 있었다.
어떻게 커밋 기록을 저장하고 접근하며 비교하는지 알 수 있었다.

로그를 출력해보면서 작은 단위로 커밋을 하면서 커밋 메시지에 작업 내용을 간략하게 잘 적어놓으면 후에 나 혹은 협업자가 보았을때 작업 진행 상황을 쉽게 파악할 것이라고 생각했다.

0개의 댓글