Github

14. Branch 정보 확인

CosmosProject 2021. 1. 15. 22:55
728x90
반응형

 

 

 

Branch 정보 확인

이번 챕터에선 Branch를 만들고 나서 현재 상황을 파악할 수 있는 방법을 살펴봅시다.

1. git branch

 

* exp
branch

git branch 명령어를 입력하면 위처럼 출력됩니다.

* 표시가 있는 것이 현재 있는 branch입니다.

따라서 현재는 exp branch를 향하고 있다고 볼 수 있습니다.


2. git log --branches 또는 git log --branches --decorate
--branches 옵션은 우리 저장소에 있는 모든 Branch들을 다룬다는 의미입니다.
위 내용을 입력하면 아래와 같은 이미지 내용이 나옵니다.



(master) 표시는 master branch의 가장 최신 commit이 뭔지를 나타냅니다.
(exp) 표시는 exp branch의 가장 최신 commit이 뭔지를 나타냅니다.
그리고 (HEAD -> exp)처럼 써져있는데 HEAD가 붙여있는 Branch는 현재 내가 위치해있는 Branch라는 뜻입니다.

위 이미지를 보면 master는 가장 최근 commit이 2이고, exp는 가장 최근 commit이 4라는 것을 알 수 있습니다.

 


3. git log --branches --decorate --graph
위처럼 입력하면 log 왼쪽에 어떤 줄이 생깁니다.
이것은 branch들이 어떤 흐름으로 흘렀는지를 그래프의 형식으로 나타내줍니다.
지금은 아래 이미지처럼 별 차이가 없는데 두 브랜치가 전혀 다른 commit의 길을 걸어갈 때 --graph 옵션의 효용성이 드러납니다.



4. git checkout master
master branch로 이동

 


5. vim f3.txt
git add f3.txt
git commit -m 5
git log
f3.txt 파일을 생성 후 로그를 보면 master에 대해 1, 2, 5 commit이 생긴 것을 볼 수 있습니다.



1. git log --branches
모든 Branch의 로그를 보여줌. 단 무슨 Branch로부터 왔는지 구분 불가.

2. git log --branches --decorate
모든 Branch의 로그를 보여주며 각 커밋이 무슨 브랜치에서 이뤄졌는지 보여줌

3. git log --branches --decorate --graph
2번과 동일한 기능이나 branch flow를 그래프로 나타내줌


위 이미지에 나오는 그림을 한번 해석해봅시다.
2번 commit에 별표가 있고 그 다음은 3번 commit에 별표, 5번 commit에 별표가 되어있습니다.
이 말은 2번 commit까지는 exp branch가 없었다가 2번 commit이 마쳐진 후 exp branch가 생기며 exp branch에서 3, 4번 commit이 일어났다는 뜻입니다.

master, exp 두 branch의 부모 branch는 2번 commit입니다.

 


4. git log --branches --decorate --graph --oneline
위처럼 oneline 옵션을 추가하여 아래 이미지처럼 branch flow를 간단하게 볼 수 있습니다.


Branch 간의 차이 파악

1. git log master..exp
master에는 없고, exp에는 있는 commit을 보여줍니다.
이 예시에선 exp branch에 있는 3, 4번 commit이 뜨겠네요.

2. git log exp..master
exp에는 없고 master에는 있는 commit을 보여줍니다.

3. git log -p exp..master
위 명령어는 2번과 동일하나 -p옵션을 붙임으로서 아래 내용처럼 두 branch간에 있고 없는 파일 그리고 그 파일의 내용 차이를 출력해줍니다.

diff --git a/bran/f3.txt b/bran/f3.txt
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/bran/f3.txt
@@ -0,0 +1 @@

4. git diff master..exp
master branch에 f3.txt파일을 생성한 후에 위 내용을 실행해봅시다.
그러면 아래와 같은 내용이 나타날 수 있는데 아래 내용을 읽어봅시다.

일단 명령어에서 master를 왼쪽에 exp를 오른쪽에 적었으니 master가 -이며 exp가 +입니다.
따라서 -로 표시된 내용은 master에는 있으나 exp에는 없는 내용을 가리키며 +로 표시된 내용은 master에는 없으나 exp에는 있는 내용을 가르킵니다.

--- a/f1.txt
+++ b/f1.txt
a
b
+c 
master branch에는 f1.txt파일이 있습니다.
exp branch에는 f1.txt파일이 있습니다.
a, b는 master, exp branch의 f1.txt 파일 모두에 존재합니다.
c는 exp branch의 f1.txt 파일에만 존재합니다.


--- /dev/null
+++b/f2.txt
+a
master branch에는 f2.txt 파일이 없습니다.
exp branch에는 f2.txt 파일이 있습니다.
exp branch의 f2.txt 파일에는 a라는 내용이 있습니다.


--- a/f3.txt
+++ /dev/null
-a
master branch에는 f3.txt 파일이 존재합니다.
exp branch에는 f3.txt 파일이 존재하지 않습니다.
master branch의 f3.txt 파일에는 a라는 내용이 있습니다.

 

 

 

 

728x90
반응형