형상관리/Git

Git log 옵션/reset/commit 옵션

jungmin.park 2023. 10. 27. 10:22

log -p (버전에 대해 파악)

  • log -p 옵션을 사용하면 버전간의 차이점과 과거 어느시점의 내용을 파악할 수 있다.
  • 각각의 커밋과 커밋사이 소스상의 차이점을 알 수 있다.
commit 96f4ef4bc9d69df35bdd54c1529680eba9fc61b2 (HEAD -> master)
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Dec 27 13:57:17 2022 +0900

    4

diff --git a/f2.txt b/f2.txt
index 2456b16..d170595 100644
--- a/f2.txt
+++ b/f2.txt
@@ -1 +1 @@
-source : 2
+source : 4

commit 5d6ec50fbacee1d06a4c2d7e67a7a516321ca53a
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Dec 27 11:25:23 2022 +0900
  • 버전 4에 대한 내용은 +++/b/f2.txt 가 해당되며, 버전 3에 대한 내용은 ---a/f2.txt 에 해당된다.
  • f2.txt 파일의 내용이 source : 2 에서 source : 4 수정이 되었다는 것을 의미한다.

commit 8ac12a40e451112ae8bfe4a72d81e8344fa10929
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Dec 27 11:25:08 2022 +0900

    2

diff --git a/f2.txt b/f2.txt
new file mode 100644
index 0000000..2456b16
--- /dev/null
+++ b/f2.txt
@@ -0,0 +1 @@
+source : 2

commit 981e45f57274b9f040b687a0c82739c8956e18b5
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Dec 27 11:12:27 2022 +0900
  • 버전 2에 대한 내용 +++ b/f2.txt
  • 버전 1에 대한 내용 --- /dev/null -> 버전 1에서는 해당 f2.txt 파일이 없음을 의미
  • f2.txt 파일이 추가되었으며 source : 2 의 내용은 f2.txt의 초기 내용이다.

 

log [commit 고유 주소]

  • 전체 커밋에 해당하는 메시지가 아닌 commit 고유 주소 이전의 메세지만 보이게 됨
XXXX@DESKTOP-PTQ94IS MINGW64 ~/Desktop/Documents/gitfth (master)
$ git log 8ac12a40e451112ae8bfe4a72d81e8344fa10929
commit 8ac12a40e451112ae8bfe4a72d81e8344fa10929
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Dec 27 11:25:08 2022 +0900

    2

commit 981e45f57274b9f040b687a0c82739c8956e18b5
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Dec 27 11:12:27 2022 +0900

    1

 

log diff [commit 고유 주소]...[commit 고유 주소]

  • 각각의 커밋에 해당하는 소스코드 사이에 차이점을 보여줌
  • 96f~ 와 8ac12~ 의 각각에 코드 상의 차이점을 보여줌.
$ git diff 96f4ef4bc9d69df35bdd54c1529680eba9fc61b2..8ac12a40e451112ae8bfe4a72d81e8344fa10929
diff --git a/f1.txt b/f1.txt
index e61c57f..e2eaf76 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1 +1 @@
-source : 3
+source : 1
diff --git a/f2.txt b/f2.txt
index d170595..2456b16 100644
--- a/f2.txt
+++ b/f2.txt
@@ -1 +1 @@
-source : 4
+source : 2

 

diff

  • 커밋을 하기전 문제가 있는지 리뷰를 할 수 있는 마지막 기회를 제공
  • f1.txt 텍스트를 f1.txt:5 로 내용을 수정한 뒤 바로 git diff 입력
  • f1.txt 를 git add 한 뒤 git diff를 입력하면 메시지가 출력되지 않는다.
$ git diff
warning: LF will be replaced by CRLF in f1.txt.
The file will have its original line endings in your working directory
diff --git a/f1.txt b/f1.txt
index e61c57f..e3a30dc 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1 +1 @@
-source : 3
+f1.txt : 5

 

reset [commit 고유 주소] --hard

  • HEAD가 [commit 고유 주소]를 가르키도록 한다.
  • 실행을 시키면 HEAD가 [commit 고유 주소]를 가르키고 있으며, 저장소에 변경사항도 없는 상태이다.
commit 4ed6a0e82546df905cc77363d0a1c8766718c711 (HEAD -> master)
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Jan 3 09:48:30 2023 +0900

    5

diff --git a/f1.txt b/f1.txt
index 2456b16..7686a17 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1 +1 @@
-source : 2
+source : 5

commit 3aecb4fce0ef7220fcdcb00cf9c502c86863c8a8
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Jan 3 09:48:11 2023 +0900

    4

diff --git a/f2.txt b/f2.txt
index e61c57f..d170595 100644
--- a/f2.txt
+++ b/f2.txt
@@ -1 +1 @@
-source : 3
+source : 4

commit 7f2bff9784afc9b233d9bb5d6ac144e833233626
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Jan 3 09:46:59 2023 +0900

    3

diff --git a/f2.txt b/f2.txt
new file mode 100644
index 0000000..e61c57f
--- /dev/null
+++ b/f2.txt
@@ -0,0 +1 @@
+source : 3

commit 90624b36a2cacd5622cc7071e95e33067c2b376c
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Jan 3 09:45:59 2023 +0900

    2

diff --git a/f1.txt b/f1.txt
index e2eaf76..2456b16 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1 +1 @@
-source : 1
+source : 2

commit 0f1e4fc717750c0a2e3d8951cd1008a7017529c3
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Jan 3 09:44:47 2023 +0900

    1

diff --git a/f1.txt b/f1.txt
new file mode 100644
index 0000000..e2eaf76
--- /dev/null
+++ b/f1.txt
@@ -0,0 +1 @@
+source : 1
version 상태 내용 commit id
1 f1.txt 생성 source : 1 0f1e4fc717750c0a2e3d8951cd1008a7017529c3
2 f2.txt 수정 source : 1 -> source : 2 90624b36a2cacd5622cc7071e95e33067c2b376c
3 f2.txt 생성 source : 3 7f2bff9784afc9b233d9bb5d6ac144e833233626
4 f2.txt 수정 source : 3 -> source : 4 3aecb4fce0ef7220fcdcb00cf9c502c86863c8a8
5 f1.txt 수정 source : 2 -> source : 5 4ed6a0e82546df905cc77363d0a1c8766718c711
  • version 3으로 가려는 경우
  • git reset 7f2bff9784afc9b233d9bb5d6ac144e833233626 —hard
$ git log -p
commit 7f2bff9784afc9b233d9bb5d6ac144e833233626 (HEAD -> master)
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Jan 3 09:46:59 2023 +0900

    3

diff --git a/f2.txt b/f2.txt
new file mode 100644
index 0000000..e61c57f
--- /dev/null
+++ b/f2.txt
@@ -0,0 +1 @@
+source : 3

commit 90624b36a2cacd5622cc7071e95e33067c2b376c
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Jan 3 09:45:59 2023 +0900

    2

diff --git a/f1.txt b/f1.txt
index e2eaf76..2456b16 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1 +1 @@
-source : 1
+source : 2

commit 0f1e4fc717750c0a2e3d8951cd1008a7017529c3
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Jan 3 09:44:47 2023 +0900

    1

diff --git a/f1.txt b/f1.txt

 

commit --help

  • commit에 대한 다양한 옵션을 확인하고 싶을 경우 사용하는 옵션

commit -a

파일의 수정이 끝나면 git add 를 이용해서 storage 로 올린 뒤 git commit 를 이용해 커밋 메시지를 작성하고 repository에 올리는 작업을 했다.
이를 한 번에 해결해주는 것이 -a 옵션
  • -all

Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected.

  • a의 사용 예시
더보기
$ git commit -a
[master 783f2bc] 6
 2 files changed, 2 insertions(+)

Nethru@DESKTOP-PTQ94IS MINGW64 ~/Desktop/Documents/practice_git (master)
$ git log -p
commit 783f2bc9af4f34eb8e462f1ba8d4d1320db2502d (HEAD -> master)
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Jan 3 10:12:18 2023 +0900

    6

diff --git a/f1.txt b/f1.txt
index 2456b16..8fa8c8f 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1 +1,2 @@
 source : 2
+6
diff --git a/f2.txt b/f2.txt
index e61c57f..d44ba55 100644
--- a/f2.txt
+++ b/f2.txt
@@ -1 +1,2 @@
 source : 3
+7

 

       
verison 상태 내용 commit id
1 f1.txt 생성 source : 1 0f1e4fc717750c0a2e3d8951cd1008a7017529c3
2 f1.txt 수정 source : 1 → source : 2 90624b36a2cacd5622cc7071e95e33067c2b376c
3 f2.txt 생성 source : 3 7f2bff9784afc9b233d9bb5d6ac144e833233626
4 f2.txt 수정 source : 3 → source : 4 3aecb4fce0ef7220fcdcb00cf9c502c86863c8a8
5 f1.txt 수정 source : 2 → source : 5 4ed6a0e82546df905cc77363d0a1c8766718c711
6 f1.txt, f2.txt 수정 source 2 → source 2 6

——————————-
source 3 → source 3 7
783f2bc9af4f34eb8e462f1ba8d4d1320db2502d

 

commit -am

commit 까지 한 번에 해결해주는 옵션 -a 까지 살펴보았다.
이것에 추가로 -m 옵션을 추가하여 메시지를 입력하여 명령어 입력시 한 번에 commit 할 수 있다.
  • m <msg>
  • -message=<msg>

Use the given <msg> as the commit message. If multiple -m options are given, their values are concatenated as separate paragraphs. The -m option is mutually exclusive with -c, -C, and -F.

 

  • -m 사용예시
더보기
XXXXX@DESKTOP-PTQ94IS MINGW64 ~/Desktop/Documents/practice_git (master)
$ git commit -am "8"
[master 5b7ebec] 8
 1 file changed, 1 insertion(+), 1 deletion(-)


$ git log -p
commit 5b7ebeced9973def48b2a595063c1a6191fd85d8 (HEAD -> master)
Author: jeongmin <pjm9673@gmail.com>
Date:   Tue Jan 3 10:55:42 2023 +0900

    8

diff --git a/f1.txt b/f1.txt
index 8fa8c8f..a076dd3 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1,2 +1,2 @@
 source : 2
-6
+8

 

       
version 상태 내용 commit id
1 f1.txt 생성 source : 1 0f1e4fc717750c0a2e3d8951cd1008a7017529c3
2 f1.txt 수정 source : 1 → source : 2 90624b36a2cacd5622cc7071e95e33067c2b376c
3 f2.txt 생성 source : 3 7f2bff9784afc9b233d9bb5d6ac144e833233626
4 f2.txt 수정 source : 3 → source : 4 3aecb4fce0ef7220fcdcb00cf9c502c86863c8a8
5 f1.txt 수정 source : 2 → source : 5 4ed6a0e82546df905cc77363d0a1c8766718c711
6 f1.txt, f2.txt 수정 source 2 →
source 2
6
——————————-
source 3 →
source 3
7
783f2bc9af4f34eb8e462f1ba8d4d1320db2502d
8 f1.txt 수정 source 2
6 →
source 2
8
5b7ebeced9973def48b2a595063c1a6191fd85d8