해리의 데브로그

생활코딩 Git 03 - branch 만들기, 정보확인

|


brach 소개

  • 파일을 용도에 따라 나누고, 다시 합치는 경우는 매우 까다로우나 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