git 배워보기 / log, diff

이상기·2023년 3월 22일
0

git

목록 보기
5/9

git log

이 명령어는 앞에서도 버전들의 정보와 시간 저자의 정보를 알 수 있었다.
이번에는 조금 다르게 사용해볼 것이다.

git log -p //소스 간 차이점 출력
───────────────────────────────────────
commit ea6b406f8016e9d639dcbd72c5268c8c1ed54835
Author: 이름 메일
Date:   Wed Mar 22 16:44:41 2023 +0900

    f3 내용변경

diff --git a/f3_f2copy,txt b/f3_f2copy,txt
index 9c85570..118814b 100644
--- a/f3_f2copy,txt
+++ b/f3_f2copy,txt
@@ -1 +1,2 @@
-Source : f2-1
+Source : f2-1 copyright
+내용은 의미가 없다.

commit e9fa643bc5a31f315789fa61d3c5e435cec14725
Author: 이름 메일
Date:   Wed Mar 22 16:42:25 2023 +0900

    f2txt의 복사본 파일 업로드

diff --git a/f3_f2copy,txt b/f3_f2copy,txt
new file mode 100644
index 0000000..9c85570
--- /dev/null
+++ b/f3_f2copy,txt
@@ -0,0 +1 @@
+Source : f2-1

commit 5924d6adb4554dee66e01840664a15ca27e08ec3
Author: 이름 메일
Date:   Tue Mar 21 18:28:20 2023 +0900

    두 번째 버전 생성 및 f2.txt 생성

diff --git a/f2.txt b/f2.txt
new file mode 100644
index 0000000..9c85570
--- /dev/null
+++ b/f2.txt
@@ -0,0 +1 @@
+Source : f2-1

commit 540fc6247133259b10e466e760cc6c8c40952d63
Author: 이름 메일
Date:   Tue Mar 21 18:24:24 2023 +0900

    두 번쨰 버전 실행

diff --git a/f1.txt b/f1.txt
index 14cf84e..ad5910c 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1,2 +1,2 @@
-source : 1
+source : 2

위의 git log -p 로 명령어만 쳤을 뿐인데 이것저것 많이 나왔다. 이를 하나씩 알아보자.

버전 간 비교

commit ea6b406f8016e9d639dcbd72c5268c8c1ed54835
Author: 이름 메일
Date:   Wed Mar 22 16:44:41 2023 +0900

    f3 내용변경
──────────────────────────────────────
diff --git a/f3_f2copy,txt b/f3_f2copy,txt
index 9c85570..118814b 100644
--- a/f3_f2copy,txt
+++ b/f3_f2copy,txt
@@ -1 +1,2 @@
-Source : f2-1
+Source : f2-1 copyright
+내용은 의미가 없다.
──────────────────────────────────────
commit e9fa643bc5a31f315789fa61d3c5e435cec14725
Author: 이름 메일
Date:   Wed Mar 22 16:42:25 2023 +0900

    f2txt의 복사본 파일 업로드

위의 코드를 보기 좋게 나눠 놓은 것이다.
이 코드에서 나눠놓은 위 아래 각 버젼이 있고 가운데에 있는것이 이 2가지를 비교한 내용이다.
'+++ b/f3_f2copy.txt' 은 위의 'f3 내용변경' 이라고 적힌 버전을 가리킨다.
'--- a/f3_f2copy.txt' 은 아래의 'f2txt의 복사본 파일 업로드' 이라고 적힌 버전을 가리킨다.

'-Source : f2-1'은 아랫 버전의 내용이다.

'+Source : f2-1 copyright'은 위의 버전에 내용이다.

각 버전 블록 별 commit 뒤에 나오는 값은 각각의 커밋이 저장되어있는 주소를 뜻한다. 만약, git log <commit주소> 를 입력한다면 해당 주소 전까지의 커밋만 보여주게 된다.

만약 전 버전에는 존재하지 않던 파일이라면?

commit e9fa643bc5a31f315789fa61d3c5e435cec14725
Author: 이름 메일
Date:   Wed Mar 22 16:42:25 2023 +0900

    f2txt의 복사본 파일 업로드

diff --git a/f3_f2copy,txt b/f3_f2copy,txt
new file mode 100644
index 0000000..9c85570
--- /dev/null
+++ b/f3_f2copy,txt
@@ -0,0 +1 @@
+Source : f2-1

commit 5924d6adb4554dee66e01840664a15ca27e08ec3
Author: 이름 메일
Date:   Tue Mar 21 18:28:20 2023 +0900

    두 번째 버전 생성 및 f2.txt 생성

위의 차이점 쪽을 보면 하단의 버전을 가리키는 "---" 부분의 이어지는 것을 보면
" /dev/null " 이라고 적혀있다. 우리는 이를 통해서 전 버전에는 없었던 파일이란 것을 알 수 있다. 그렇다보니 "+"다음 내용이 나오는 부분도 하나밖에 없는 것이다.

버전 간 비교 2

위에서 알아본것처럼 각 커밋은 커밋별 주소가 존재한다. 그럼 이 주소끼리 비교가 가능한가? 라고 물으면 가능하다. 하는 방법은 다음과 같다.

$ git diff 700e946b928b587b4202794583cb7dec89eecde2..5924d6adb4554dee66e01840664a15ca27e08ec3

위는 내 각 커밋별 주소로 이둘을 지정하여 둘간의 비교가 가능하다.

vim f1.txt
// source : 2 
// 
// 위의 값을 
// source : 5
// 로 수정하였다.
git diff
diff --git a/f1.txt b/f1.txt
index ad5910c..7686a17 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1,2 +1 @@
- source : 2
-
+source : 5

값을 수정 후 git diff 만 쳤을 때 위와 같은 텍스트들이 보였다.

이 효과는 git add를 한 후에는 보이지 않는다.

이게 왜 중요하지?

현재의 값과 과거의 값을 알려줌으로써 사용자가 한 작업의 확인을 통해서 작업에서의 실수를 방지해준다. 이것이 VCS에 가장 중요한 효과이다.

정리

커밋 별 차이점을 보고 싶다면

  • git log -p

지정 한 커밋과 커밋 사이의 모든 차이점들을 보고 싶다면

  • git diff <커밋주소>..<커밋주소>

방금 한 작업의 전 커밋과 비교했을 때 차이점을 보고싶다면

  • git diff

diff 기능은 add후에는 옵션이나 주소없이는 안써지니 주의!

profile
DBA가 되고싶은 사람입니다

0개의 댓글