형상관리/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