개발 이야기/Git

[GIT] git log와 git diff란?

제이온 (Jayon) 2020. 11. 24.

 

 

안녕하세요? 코딩중독입니다.

 

저번 시간에는 git commit 명령어에 대해서 알아 보았습니다.

 

이번 포스팅에서는 git log와 git diff 명령어에 대해 설명하겠습니다.

 

 

git log

우리는 이전 시간에 git log 명령어를 써 봤습니다. 간단하게 말하면, commit의 히스토리를 확인할 수 있는 명령어였죠.

 

우리는 현재 gitProject 폴더 안의 test.txt, test_2.txt로 총 2개의 파일이 있고 이미 이 두 개의 파일에 대해서는 commit이 끝난 상태입니다.

 

이 상태에서 test_3.txt를 vim 편집기를 이용하여 만들고 내용은 음.. 적당히 world 정도로 합시다.

 

그리고 git add test_3.txt를 한 후, git commit를 입력한 다음 vim 편집기에서 ver.2라고 입력해 주고 나갑시다.

 

 

 

 

위의 과정을 수행한 후, git log를 입력하면 위와 같이 commit 히스토리를 확인하실 수 있습니다.

 

지금까지 2개의 commit이 있었고, 저자의 정보, 날짜가 있네요.

 

이제, git log가 아니라, git log -p를 입력해 보겠습니다.

 

 

 

 

뭔가 아까보다 정보가 더 나옵니다. 그리고 자세히 들여다보면, 인접한 2개의 commit을 비교한다는 사실을 알 수 있습니다.

 

먼저, ver.1의 commit을 봅시다. "---"와 "+++"를 주의 깊게 보시길 바랍니다.

 

"---" 옆에는 "/dev/null"이라고 되어 있고, "+++" 옆에는 "b/test.txt"라고 되어 있습니다. 여기서, 'null'은 존재하지 않다는 상태로, 대충 해석해보면 아무 것도 없던 공간에 test.txt가 추가되었구나정도로 이해하셔도 괜찮습니다.

 

이제, ver.2의 commit을 봅시다. 여기는 ver.2의 commit과 비교합니다.

 

그리고 내용은 ver.1에서 설명한 것과 같이 단순히 없던 공간에 test_3.txt가 추가되었다는 사실을 확인할 수 있습니다.

 

 

다음으로, vim test_3.txt를 열어서 world 대신 world!를 입력하고, git add, git commit을 합시다. 그리고 commit 메시지는 ver.3로 해 주세요. (만약, git log -p을 입력한 상태에서 바깥으로 나올 수 없다면, q를 입력해 주세요.)

 

그리고 git log -p를 다시 입력합니다.

 

 

 

 

이제는, 차이가 확 느껴집니다. 내용이 world에서 world!로 바뀐 것이죠!

 

이와 같이 git log -p는 commit의 상세 히스토리를 보여주되, 인접한 commit끼리 변화된 부분을 알려주는 역할을 합니다.

 

 

git diff

하지만, 인접한 commit말고도 방금 전 commit과 예전의 수행한 commit끼리 비교를 하고 싶을 수 있습니다.

 

이럴 때는 git diff A..B 명령어를 사용합니다. 여기서, A와 B의 들어갈 명령어는 commit의 id입니다.

 

그리고 이 id는 git log를 통해 확인할 수 있습니다.

 

 

 

 

가령, ver.1에 해당하는 commit의 아이디는 위 사진에서 알 수 있듯이, commit 옆에 써 있는 기다란 문자열입니다.

 

저는 ver.3에 해당하는 commit과 ver.1에 해당하는 commit을 서로 비교해 보겠습니다.

 

 

 

 

ver.1은 test.txt와 test_2.txt가 있는 상태고, ver.3은 test.txt, test_2.txt, test_3.txt가 존재합니다.

 

따라서 둘 사이의 차이는 test_3.txt의 유무가 됩니다. 그리고 맨 아래 줄에는 그 test_3.txt의 내용도 보여주고 있네요.

 

 

그렇다면, 그냥 git diff는 뭘까요? 이것을 설명하기 전에, vim test_3.txt를 열어서 맨 뒤에 !를 하나 더 붙여 줍시다.

 

그리고 git add를 하지 마시고 git diff를 입력해 봅시다.

 

 

 

 

다음과 같이 변화의 전후를 보여주고 있습니다. 그리고 git add를 한 후, git diff를 입력하게 되면 아무것도 보여주지 않는 것을 알 수 있습니다.

 

그리고 이것은 우리가 git add를 하기 전에 다시 한 번 내용을 검토할 기회를 줍니다. 

 

 

정리

지금까지 commit의 히스토리를 파악할 수 있는 git log와 특정 commit을 비교할 수 있는 git diff에 대해 배웠습니다.

 

버전 관리 중 하나인 과거로 돌아가는 기능을 수행하기 위해서 꼭 알아야 하는 기능이니 잘 학습하시면 되겠습니다.

 

글은 이만 줄이고, 다음 포스팅에서 뵙겠습니다.

 

 

참고 사이트

opentutorials.org/course/2708

 

지옥에서 온 Git (새 수업으로 대체) - 생활코딩

이 수업은 GITn 시리즈로 완전히 대체 되었습니다. GITn은 보다 많은 내용을 작은 단위로 쪼개서 선택적으로 공부하실 수 있도록 제작된 수업입니다. 아래 주소를 통해서 GITn 을 접할 수 있습니다.

opentutorials.org

 

 

 

 

댓글

추천 글