이번 포스팅에서는 브랜치들 간 차이점을 비교하는 방법에 대해 소개하고자 합니다.

먼저 현재 상태부터 보여드리고, 실습을 통해 명령어들에 대해 알아가보도록 하겠습니다.


 현재 상태 확인.

현재 상태는 branch가 master, example1, example2가 있으며 master에서 log는 위와 같습니다.

그리고 example1 브랜치에서 상태는 다음과 같다.

위와 같이 master 브랜치에서 git log 명령어를 하면 example1 브랜치에서 commit했던 'add bbbbb.txt' log를 볼 수 없다.

그럼 어떻게하면 한 브랜치에서 다른 모든 브랜치들의 log나, 다른 한 브랜치와 비교하거나, 코드를 비교할 수 있을까?

이제부터 위에 대한 방법을 하나씩 알아가보도록 하자.


1. 모든 Branch의 commit 정보 확인하기 : git log --branches

git log --branches  명령어를 사용하면  현재 어느 브랜치에 있던 모든 브랜치들의 commit 상태를 확인할 수 있다.

(현재 master에 있지만 example1 브랜치가 commit한 'add bbbbb.txt'가 뜨는 것을 볼 수 있다.)

여기에서 다음과 같이 oneline 옵션을 통해 조금 더 간략히 볼 수 있다. 



2. 두 브랜치간 비교하기 : git log '비교할 브랜치1' '비교할 브랜치2'

< git log master example1 >

위의 명령어를 통해서 master과 example1 브랜치간 차이점을 확인 할 수 있다.

그럼 두 브랜치간 코드비교는 어떻게 할까?


3. 두 브랜치간 코드 비교하기 : git diff '비교할 브랜치1' '비교할 브랜치2'

위와 같이 git diff 로 브랜치간 코드를 비교할 수 있는데. 'bbbbb.txt' 파일이 새로 생성되고 내용은 초록색 글씨로 된

'bbbbb'인 것을 확인 할 수 있다.


 이번 포스팅은 Git의 최대 장점이라고 들리는(?) Branch를 알아보고 실습을 해보도록 하겠습니다.



 1. Branch란?

 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다.

 실습을 해보면서 어떻게 사용하는 것인지 보도록 하겠습니다.



 2. 실습해보기.


1) 초기 상태.

branch를 추가하지 않은 초기의 모습을 먼저 보겠습니다.

git branch를 입력하게되면 branch의 목록이 나오고, 현재 어느 branch인지 보여줍니다.

git은 저장소를 만들면 기본적으로 'master'라는 이름의 branch를 만들어줍니다. 따라서 위에 보이는 master 브랜치는 자동으로 생성된 branch입니다.



2) 'git branch 브랜치이름' : branch를 생성하는 명령어

실습을 해보기 위해 'example1'이라는 branch를 생성했습니다.

그리고 git branch 를 입력해서 보면 현재 branch가 'example1', 'master' 이렇게 2개가 된 것을 확인할 수 있습니다.



3) 'git branch -d 브랜치이름' : 브랜치이름에 해당하는 branch를 삭제하는 명령어

  'example1','master' 브랜치가 있는 상태에서 'example1' 브랜치를 삭제해보았습니다.

삭제 후 'git branch' 명령어를 통해 브랜치를 보면 'master'브랜치만 남은 것이 보입니다.



4) 'git checkout 전환하려는 브랜치 이름' : 브랜치를 전환하는 명령어

'master' 브랜치에서 'example1'으로 브랜치를 전환해보았습니다.

master에 있던 *가  example1으로 이동한 것을 볼 수 있습니다. 이것은 현재 브랜치가 'example1'이라는 것을 의미합니다.



5) 'git checkout -b 생성하고 변환하려는 브랜치 이름' : branch를 생성함과 동시에 전환하는 명령어

git checkout에 -b 옵션을 주게되면 브랜치를 생성하고 전환까지 하게 됩니다.

즉, git branch 브랜치명 → git checkout 브랜치명  : 이 과정은 'git checkout -b 브랜치명'  하는 것과 같습니다.



6) branch 전환해서 작업해보고 무슨 차이가 있는지 알아보기

 <master 브랜치에서 상태 >

현재 branch는 master, example1, example2 가 있고, aaaaa.txt라는 파일이 있습니다.

git log도 위와같이 볼 수 있습니다.

 이제 example1 브랜치로 전환해서 bbbbb.txt라는 파일을 생성하고, commit까지 해보겠습니다.

 < example1 브랜치에서의 상태 >

example1 브랜치로 전환해서 bbbbb.txt 파일을 생성하고 commit까지 한 상태입니다.

여기서 브랜치를 다시 master로 전환하면 example1 브랜치에서 생성했던 bbbbb.txt파일과 log는 어떻게 바뀔까요?

결론을 먼저 말씀드리자면, master브랜치로 다시 전환하면 bbbbb.txt파일은 없어지고, 'add bbbbb.txt'라는 commit 로그도 없어집니다.


 < example1 -> master branch로 전환 후 모습 >

위의 화면을 보시면 브랜치를  example1 -> master로 변경하고, 현재 디렉토리의 파일, git log를 볼 수 있습니다.

다시 master -> example1 으로 브랜치를 변경하고 파일의 상태와, log를 보고 포스팅을 마무리 짓겠습니다.

< master -> example1 으로 branch 다시 전환 후 모습 >

이것을 통해 branch는 각각 독립된 저장소라고 생각 할 수있습니다. 




+ Recent posts