branch
를 만들면 편리성을 가질수있지만 또한 복잡성도 크게 생깁니다.
효율적으로 사용하기 위해 만든 여러가지 기능들은 복잡도를 초래할 수 있습니다.
이번 시간에는 branch
를 만들었을때 현재 어떤 상황인지를 판단할 수 있기 위한 확인 방법을 몇가지 알아보겠습니다.
git log
를 그냥 사용하면 어떤것이 master
의 log
인지 , 어떤 것이 exp
의 log
인지 확인이 불가능합니다.
이때 git log --branches --decorate
를 써줍니다.
그러면 우측에 초록색 글씨로 어떤 branch
가 commit
했는지를 알려줍니다.
또한 HEAD -> master
이라는 뜻은 현재 우리는 master
에 checkout
되어있다는 의미입니다.
조금더 잘 보기 위해서 git --branches --decorate --graph
명령을 실행시켜보겠습니다.
좌측에 빨간색과 초록색의 선이 보입니다. 이 명령어는 여러가지의 branch
가 서로 다른 commit
을 했을때 더 시각적으로 나타납니다.
git checkout master
로 branch
를 바꿔준후 새로운 파일 믄달어서 a
라는 문구를 하나 넣어보겠습니다.
새로 만든 파일이기 때문에 add
와 commit
를 따로 해줍니다.
git log
를 실행시 커밋메세지 3,4 가 없는 이유가 뭘까요?
git log
는 기본적으로 현재 branch
에서 실행한 커밋메세지만 보여주기 때문입니다.
조금 길게 봤을때
금방 만든 커밋메세지 의 조상은 바로 이전에 만든 커밋메세지 입니다.
이는 왼쪽에 잘보면 * 모양으로 구별가능합니다.
또한 branch
가 exp_2
일때의 조상은 exp
의 커밋메세지 인것을 확인 할 수 있습니다.
git log --branches --decorate --graph --oneline
을 실행해보겠습니다.
한줄로 더 간략하게 branch
의 정보를 확인할 수 있습니다.
만약 두개의 branch
가 어떤 차이가 있는지 궁금하다면 git log master..exp
를 사용하면됩니다.
이는 master
에는 없고 exp
에는 있는것을 가르킵니다.
앞서 graph
명령을 실행시킨 결과를 다시 보시면 exp
는 커밋메세지 으로 새로운 분기점이 생긴것을 확인 할 수 있습니다.
반대로도 가능합니다. git log exp..master
실행시 exp
에는 없고 master
에는 있는 것을 알려줍니다.
따라서 커밋메세지 , 이 출력됩니다.
만약 소스코드까지 필요하다면 -p
옵션을 추가하면됩니다.
--- /dev/null
, +++ b/f6.txt
가 의미하는 바는
exp
에서는 파일이 없는데 master
에서는 f6.txt
파일이 생성되었고 b
라는 문자가 추가되었다는 의미입니다.
diff
명령을 활용할 수 있습니다. git diff master..exp
를 실행해보겠습니다.
master
에는 abcd
가 전부 있지만 exp
에서는 d,e
가 없다는 것을 확인 할 수 있습니다. 첫번째가 master
이고 두번째가 exp
입니다.
그리고 빨간색 표시는 exp
의 변화를 뜻합니다.
현재까지 branch
의 정보를 확인하는 방법에 대해 알아봤습니다.
그다음에는 branch
병합에 대해 알아보겠습니다.