생활코딩 Git 03 - branch 만들기, 정보확인
10 Feb 2019 | Gitbrach 소개
- 파일을 용도에 따라 나누고, 다시 합치는 경우는 매우 까다로우나 git을 사용하면 훨씬 쉽고 세련되게 관리를 할 수 있음.
- 작업을 진행하다 분기되는 현상 : branch를 만든다
- 위의 예시의 경우, 기존의 branch + 분기된 branch; 총2개의 branch를 갖게됨.
- branch의 개념은 위험하며 어렵고, 용량이 많이 차지하여 타 프로그램에서 사용되어 오지 않았으나, git은 이 기능을 쓸만한 수준까지 올렸다는 것임.
brach 만들기
#master: 현재 master 이라는 branch 를 사용하고 있다는 의미
해리@DESKTOP-8D71JEB MINGW64 ~/gitfth (master)
git branch
: 브랜치의 목록을 표시git branch "새로운 브랜치 명"
: 브랜치 생성git branch -d "브랜치 명"
: 브랜치 삭제git branch -D "브랜치 명"
: 병합하지 않은 브랜치를 강제 삭제git checkout "전환하려는 브랜치 명"
: 브랜치를 전환(체크아웃)
브랜치를 전환하면, 파일이 현재 어느 브랜치에 속해 있느냐에 따라 내용이 완전히 달라짐
브랜치 사용의 대표적 예시: 원래 소스코드는 그래로 두면서, 고객을 위한 customizing에 해당하는 기능을 추가해야할 경우
branch 정보확인
branch를 만들면 상당히 복잡해지고 어려워 지는데, 이는 효용에 대한 댓가라고 생각함. branch룰 만들었을 때, 현재 어떠한 상황인지 판단 할 수 있도록 여러가지 방법을 살펴보자
git log "비교할 브랜치명1".."비교할 브랜치명2"
: 브랜치간에 비교git log --branches --decorate
: 좀 더 상세히 브랜치간 비교- exp branch의 최신 commit: “4”
- master brancch의 최신 commit: “6”
- HEAD: 현재 checkout 된 branch를 나타냄 (현재 checkout된 branch는 master)
$ git log --branches --decorate
commit 9b64d819b11d9dee601c5961f8172a592f5df9fa (HEAD -> master)
Author: Harry Lee <tothefullest08@gmail.com>
Date: Sun Feb 10 21:21:49 2019 +0900
6
commit 920d9826fcbe1556688e28247fe522a686607309 (exp)
Author: Harry Lee <tothefullest08@gmail.com>
Date: Sun Feb 10 21:05:25 2019 +0900
4
commit df422af85c3b6b17e190faaa77053b93247bced6
Author: Harry Lee <tothefullest08@gmail.com>
Date: Sun Feb 10 21:02:34 2019 +0900
3
commit ee6abf9bba1718690cd7968079c59467a6c753d3
Author: Harry Lee <tothefullest08@gmail.com>
Date: Sun Feb 10 20:54:29 2019 +0900
2
commit e4ba2b0b61cd8296d046ab19164e97844182c6a7
Author: Harry Lee <tothefullest08@gmail.com>
Date: Sun Feb 10 20:53:50 2019 +0900
1
git log --branches --decorate --graph
: 로그에 모든 브랜치를 표시 + 그래프 + 브랜치명
$ git log --branches --decorate --graph
* commit 9b64d819b11d9dee601c5961f8172a592f5df9fa (HEAD -> master)
| Author: Harry Lee <tothefullest08@gmail.com>
| Date: Sun Feb 10 21:21:49 2019 +0900
|
| 6
|
| * commit 920d9826fcbe1556688e28247fe522a686607309 (exp)
| | Author: Harry Lee <tothefullest08@gmail.com>
| | Date: Sun Feb 10 21:05:25 2019 +0900
| |
| | 4
| |
| * commit df422af85c3b6b17e190faaa77053b93247bced6
|/ Author: Harry Lee <tothefullest08@gmail.com>
| Date: Sun Feb 10 21:02:34 2019 +0900
|
| 3
|
* commit ee6abf9bba1718690cd7968079c59467a6c753d3
| Author: Harry Lee <tothefullest08@gmail.com>
| Date: Sun Feb 10 20:54:29 2019 +0900
|
| 2
|
* commit e4ba2b0b61cd8296d046ab19164e97844182c6a7
Author: Harry Lee <tothefullest08@gmail.com>
Date: Sun Feb 10 20:53:50 2019 +0900
1
git log --branches --decorate --graph
: 한줄로 요약하여 현상태를 표시함
$ git log --branches --decorate --graph --oneline
* 9b64d81 (HEAD -> master) 6
| * 920d982 (exp) 4
| * df422af 3
|/
* ee6abf9 2
* e4ba2b0 1
git log "브랜치명1".."브랜치명2"
: 브랜치명 사이의 로그를 비교git log -p "브랜치명1".."브랜치명2"
: 브랜치명 사이의 로그 + 소스코드까지 비교
#exp branch에는 없고, master branch에 있는 로그 표시
해리@DESKTOP-8D71JEB MINGW64 ~/gitfth (master)
$ git log exp..master
commit 9b64d819b11d9dee601c5961f8172a592f5df9fa (HEAD -> master)
Author: Harry Lee <tothefullest08@gmail.com>
Date: Sun Feb 10 21:21:49 2019 +0900
6
#exp branch에는 없고 master branch에 있는 로그 + 소스코드 표시
$ git log -p exp..master
commit 9b64d819b11d9dee601c5961f8172a592f5df9fa (HEAD -> master)
Author: Harry Lee <tothefullest08@gmail.com>
Date: Sun Feb 10 21:21:49 2019 +0900
6
diff --git a/f3.txt b/f3.txt
new file mode 100644
index 0000000..442406a
--- /dev/null
+++ b/f3.txt
@@ -0,0 +1,2 @@
+a
+
#master branch에는 없고, exp branch에 있는 로그 표시
해리@DESKTOP-8D71JEB MINGW64 ~/gitfth (master)
$ git log master..exp
commit 920d9826fcbe1556688e28247fe522a686607309 (exp)
Author: Harry Lee <tothefullest08@gmail.com>
Date: Sun Feb 10 21:05:25 2019 +0900
4
commit df422af85c3b6b17e190faaa77053b93247bced6
Author: Harry Lee <tothefullest08@gmail.com>
Date: Sun Feb 10 21:02:34 2019 +0900
3
git diff "브랜치명1".."브랜치명2"
각 branch의 현재 상태를 비교
$ git diff master..exp
diff --git a/f1.txt b/f1.txt
index 422c2b7..de98044 100644
--- a/f1.txt #master branch
+++ b/f1.txt #exp branch
@@ -1,2 +1,3 @@
a
b
+c #exp brancch의 경우, C 라는 내용이 추가되어있음을 의미
Comments