git add, git commit 명령어를 잘 숙지하고 있다면 이번 포스팅을 읽어나가는데 전혀 무리가 없습니다. 그러나 git add, git commit 명령어 개념을 숙지하지 못했다면 선수 포스팅(여기)을 먼저 읽고 이 포스팅을 읽기 바랍니다.
git log
git log 명령어는 저장소의 커밋 목록을 보는 명령어입니다. git log 명령어를 입력하면 다음과 같이 현재의 브랜치, 커밋 메세지와 작성자, 날짜 등이 기록된 커밋 목록을 볼 수 있습니다.
git log
git log 명령어는 다양한 옵션들이 있습니다. 그 중 주로 사용되는 git log 옵션들에 대해서 알아보도록 하겠습니다.
git log --oneline
git log 명령어 뒤에 "--oneline" 옵션을 붙일 수 있습니다. oneline이라는 뜻에 걸맞게 커밋 목록을 한 줄로 출력하여 간단하고 한 눈에 파악할 수 있습니다.
git log --oneline
git log --graph
git log 명령어 뒤에 "--graph" 옵션을 붙일 수 있습니다. git log --graph 명령어를 입력하면 왼쪽에 그래프가 커밋 목록들 옆에 그려집니다. git log --graph 옵션은 브랜치가 여러 개로 나누어지고 합쳐질 때 가독성 좋게 커밋 목록을 확인할 수 있도록 해줍니다.
git log --graph
git diff
git diff 명령어는 최근 커밋과 현재 작업 디렉토리의 차이를 출력합니다.
git diff
git diff 명령어 또한 마찬가지로 다양한 옵션들이 있습니다. 그 중 주로 사용되는 git diff 옵션들에 대해서 알아보도록 하겠습니다.
git diff --staged (= git diff --cached)
git diff --staged 명령어는 스테이지에 추가된 항목과 최근 커밋의 차이를 보여주는 명령어입니다.
git diff --staged
git diff --cached
git diff <커밋1> <커밋2>
git diff 커밋1 커밋2는 커밋끼리의 변경사항을 비교할 때 사용합니다. 커밋n 자리에는 당연히 커밋의 해시를 입력해야 하며 git log --oneline의 짧은 커밋 해시도 괜찮습니다. git diff 커밋1 커밋2는 커밋1을 기준으로 커밋2의 달라진 점을 출력합니다.
git diff <커밋1> <커밋2>
제 로컬 컴퓨터에서 git diff a814a34 f0fcf4b 명령어를 입력했을 때, 다음 사진과 같이 코드의 변경사항을 출력합니다.
(저 해시코드는 제 로컬 컴퓨터에서만 유효한 것이기에 실습하실 때는 본인의 작업 디렉토리에서 git log로 해시를 파악한 후, 그 해시코드를 사용해야 합니다.)
git diff <브랜치1> <브랜치2>
마지막으로, git diff는 커밋과 커밋의 비교도 가능하지만, 브랜치끼리의 비교도 가능합니다. 브랜치에 대한 개념을 아직 제대로 배우지 않았기에 간단하게 설명합니다.
git diff <브랜치1> <브랜치2>
git diff 커밋1 커밋2와 마찬가지로, git diff 브랜치1 브랜치2 명령을 통해 두 브랜치의 차이를 알 수 있습니다. 원리는 동일합니다. git diff 브랜치1 브랜치2는 브랜치1을 기준으로 브랜치2의 달라진 점을 출력합니다.
해시코드를 통하여 커밋들을 비교하던 git diff 커밋1 커밋2 방법과 달리, git diff 브랜치1 브랜치2에서는 브랜치 이름을 직접 쓰면 됩니다.