형상관리/Git

Git branch/log 옵션

jungmin.park 2023. 10. 28. 13:34

시작하기전 셋팅

Desktop > git > gitfth3에서 작업을 진행

(base) bagjeongmin@bagjeongmin-ui-MacBookAir git % mkdir gitfth3
(base) bagjeongmin@bagjeongmin-ui-MacBookAir git % ls -al
total 24
drwxr-xr-x   6 bagjeongmin  staff   192 10 28 13:14 .
drwx------@ 24 bagjeongmin  staff   768 10 27 09:07 ..
-rw-r--r--@  1 bagjeongmin  staff  8196 10 28 11:37 .DS_Store
drwxr-xr-x   5 bagjeongmin  staff   160 10 27 09:47 gitfth
drwxr-xr-x   5 bagjeongmin  staff   160 10 28 11:42 gitfth2
drwxr-xr-x   2 bagjeongmin  staff    64 10 28 13:14 gitfth3
(base) bagjeongmin@bagjeongmin-ui-MacBookAir git % pwd
/Users/bagjeongmin/Desktop/git
(base) bagjeongmin@bagjeongmin-ui-MacBookAir git %

 

 

(base) bagjeongmin@bagjeongmin-ui-MacBookAir git % cd gitfth3
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % ls
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % pwd
/Users/bagjeongmin/Desktop/git/gitfth3

 

  • git init로 초기화
  • f1.txt 파일 생성 a insert
  • git add f1.txt 스테이징에 올리기
  • git commit -m "a" 로 커밋하기
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git add f1.txt 
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git commit -m "1"
[main (root-commit) 75c79c0] 1
 1 file changed, 1 insertion(+)
 create mode 100644 f1.txt
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git log
commit 75c79c080bf8df3fb7d17249eb9a1238846a63e0 (HEAD -> main)
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:17:05 2023 +0900

    1
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 %

 

  • vim f1.txt 파일을 열어 b insert
  • git commit -am "2"
  • 총 2가지 버전이 올라왔을 것
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % vim f1.txt 
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git add f1.txt 
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git commit -m "2"       
[main e3e9dae] 2
 1 file changed, 1 insertion(+)
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git log
commit e3e9daea7162ce86ad2bdfb55c763cc5c38aabe5 (HEAD -> main)
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:19:18 2023 +0900

    2

commit 75c79c080bf8df3fb7d17249eb9a1238846a63e0
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:17:05 2023 +0900

    1

branch

분기가 필요한 경우 사용

기존의 코드는 건들지 않으면서 추가적업을 하고 싶은 경우

기능을 개발하고 기능 추가 한 뒤 다시 기능을 없애고 싶을때 전 버전으로 돌아가면 된다.

 

branch

현재사용하는 브런치와 브런치 목록을 확인 할 수 있다.

(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git branch
* main
  • 현재 나는 main 이라는 branch를 사용하고 있다.
  • git을 사용하는 그 순간부터 기본 branch을 사용하고 있는데 그것이 main/master 가 되는 것

branch [이름]

 

새로운 branch생성

(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git branch exp

git branch로 브런치 목록 확인

  • 현재 main, exp 브런치가 있으며 main 브런치를 사용 중이다.
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git branch
  exp
* main

 

checkout [브런치 이름]

  • 해당 브런치를 사용하도록 한다.
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git checkout exp
Switched to branch 'exp'
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git branch
* exp
  main

 

exp 브런치는 main 기본 브런치상태를 그대로 가지게 된다

(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git checkout exp
Switched to branch 'exp'
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git branch
* exp
  main
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git log
commit e3e9daea7162ce86ad2bdfb55c763cc5c38aabe5 (HEAD -> exp, main)
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:19:18 2023 +0900

    2

commit 75c79c080bf8df3fb7d17249eb9a1238846a63e0
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:17:05 2023 +0900

    1

 

exp 브런치에서 f1.txt 파일을 수정하고 커밋

3에 대한 log기록은 git checkout main 한 뒤 확인해보면 main 브런치에는 기록이 남아있지 않다.

(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git commit -am "3"
[exp a44b360] 3
 1 file changed, 1 insertion(+)
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git log
commit a44b36046976803148d8d49eae0bf846f8d6d661 (HEAD -> exp)
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:29:22 2023 +0900

    3

commit e3e9daea7162ce86ad2bdfb55c763cc5c38aabe5 (main)
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:19:18 2023 +0900

    2

commit 75c79c080bf8df3fb7d17249eb9a1238846a63e0
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:17:05 2023 +0900

    1

 

exp 브런치 한 뒤 다음과 같이 f2.txt 파일을 생성하고 commit 했다.

그럼 f1.txt, f2.txt 가 만들어져있을 것

(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % vim f2.txt
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git add f2.txt
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git commit -m "3"
[exp 2cd92d1] 3
 1 file changed, 1 insertion(+)
 create mode 100644 f2.txt
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git log
commit 2cd92d10405fe6b660bbb3711c689c540b31bd63 (HEAD -> exp)
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:31:59 2023 +0900

    3

commit a44b36046976803148d8d49eae0bf846f8d6d661
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:29:22 2023 +0900

    3

commit e3e9daea7162ce86ad2bdfb55c763cc5c38aabe5 (main)
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:19:18 2023 +0900

    2

commit 75c79c080bf8df3fb7d17249eb9a1238846a63e0
Author: jungmin.park <pjm9673@gmailc.om>
Date:   Sat Oct 28 13:17:05 2023 +0900

    1
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 %

 

git checkout main 한 뒤

파일 목록을 보면 exp 브런치에서 생성했었던 f2.txt 파일은 없다.

(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % git checkout main
Switched to branch 'main'
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 % ls -al
total 8
drwxr-xr-x   4 bagjeongmin  staff  128 10 28 13:33 .
drwxr-xr-x   6 bagjeongmin  staff  192 10 28 13:14 ..
drwxr-xr-x  12 bagjeongmin  staff  384 10 28 13:33 .git
-rw-r--r--   1 bagjeongmin  staff    4 10 28 13:33 f1.txt
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth3 %

 


log --branches --decorate

  • 저장소의 모든 branch를 보여준다.
  • 현재 main에 checkout 되어있으며 main에 최신 commit는 버전5이다.
  • exp의 최신 commit 버전 4이다.
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth2 % git log --branches --decorate
commit 74b90979542e20788413a930c15c6ff458322e02 (HEAD -> main)
Author: jungmin.park <pjm9673@gmail.com>
Date:   Sat Oct 28 11:42:52 2023 +0900

    5

commit deec26750f75f57388e42d5c77c02cb047a23901 (exp)
Author: jungmin.park <pjm9673@gmail.com>
Date:   Sat Oct 28 11:36:38 2023 +0900

    4

commit 73ad74db5987ac3f3044d3450f86cd729ca94602
Author: jungmin.park <pjm9673@gmail.com>
Date:   Sat Oct 28 11:34:17 2023 +0900

    3

commit e4568f863370142905ea59e81768b9c7ad2d9211
Author: jungmin.park <pjm9673@gmail.com>
Date:   Sat Oct 28 11:21:29 2023 +0900

    2

commit 988eab5d6add1fbfbe0a1aeab786b40352253ea9
Author: jungmin.park <pjm9673@gmail.com>
Date:   Sat Oct 28 11:20:33 2023 +0900

    1

 

log --branches --decorate --graph

  • 모든 브런치들의 진행상황을 그래프를 통해 보여준다.
  • exp에 현재 checkout되어 있고 exp의 최신 브런치는 4이다. exp는 2 버전에서 처음 브런치 되었다.
  • main은 현재 5버전을 가지고 있으며 
  • exp, main이 겹치는 버전은 2버전에서 같은 조상 브런치를 가지고 있다.
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth2 % git log --branches --decorate --graph
* commit 74b90979542e20788413a930c15c6ff458322e02 (main)
| Author: jungmin.park <pjm9673@gmail.com>
| Date:   Sat Oct 28 11:42:52 2023 +0900
| 
|     5
|   
| * commit deec26750f75f57388e42d5c77c02cb047a23901 (HEAD -> exp)
| | Author: jungmin.park <pjm9673@gmail.com>
| | Date:   Sat Oct 28 11:36:38 2023 +0900
| | 
| |     4
| | 
| * commit 73ad74db5987ac3f3044d3450f86cd729ca94602
|/  Author: jungmin.park <pjm9673@gmail.com>
|   Date:   Sat Oct 28 11:34:17 2023 +0900
|   
|       3
| 
* commit e4568f863370142905ea59e81768b9c7ad2d9211
| Author: jungmin.park <pjm9673@gmail.com>
| Date:   Sat Oct 28 11:21:29 2023 +0900
| 
|     2
| 
* commit 988eab5d6add1fbfbe0a1aeab786b40352253ea9
  Author: jungmin.park <pjm9673@gmail.com>
  Date:   Sat Oct 28 11:20:33 2023 +0900
  
      1

 

--branches --decorate --graph --oneline

  • 위의 요약본으로 제공
* 74b9097 (main) 5
| * deec267 (HEAD -> exp) 4
| * 73ad74d 3
|/  
* e4568f8 2
* 988eab5 1

 

log [브런치1]..[브런치2]

  • 브런치1과 브런치2 사이에 차이점을 보여준다.
  • 브런치1에는 없고 브런치2에 있는 log 들을 보여준다.
  • log -p main..exp : exp에만 있는 버전의 코드까지 확인이 가능하다.
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth2 % git log main..exp
commit deec26750f75f57388e42d5c77c02cb047a23901 (HEAD -> exp)
Author: jungmin.park <pjm9673@gmail.com>
Date:   Sat Oct 28 11:36:38 2023 +0900

    4

commit 73ad74db5987ac3f3044d3450f86cd729ca94602
Author: jungmin.park <pjm9673@gmail.com>
Date:   Sat Oct 28 11:34:17 2023 +0900

    3

 

diff [브런치1]..[브런치2]

  • 각각의 브런치의 현재 상태를 비교할 수 있다.
(base) bagjeongmin@bagjeongmin-ui-MacBookAir gitfth2 % git diff main..exp
diff --git a/f1.txt b/f1.txt
index 422c2b7..de98044 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1,2 +1,3 @@
 a
 b
+c
diff --git a/f3.txt b/f2.txt
similarity index 100%
rename from f3.txt
rename to f2.txt