티스토리 뷰

Git 공부

Git branch

on1ystar 2019. 3. 10. 20:17
728x90
반응형

본 내용은 생활코딩 - 지옥에서 온 git을 보고 공부했습니다. 조언은 언제든지 감사합니다 !


branch라는 개념은 말 그대로 나뭇가지에서 가져온 것으로 나무 기둥으로부터 많은 가지들로 나뉘는 모습과 흡사하다.

branch는 Git이 가지고 있는 훌륭한 혁신으로 하나의 작업을 하는 도중에 다른 기능들을 추가하는 작업을 따로 하고싶을 때, 작업을 잠시 멈추고 일부를 테스트 해보고 싶을 때, 협업을 할 때 등에 사용 가치가 매우 높다.

메인 작업을 하는 도중 branch를 만들어 다른 작업을 시작해도 메인 작업에는 아무 영항을 미치지 않는다. 그러다가 그 작업을 메인 작업에 병합할 수도 있고 나중에 그 부분만 따로 삭제 할 수도 있다.

단, 매우 좋은 기능인 만큼 그에 따른 대가도 있기 때문에 잘 알고 사용해야 한다. 물론 좀 복잡하기 때문에 잘 아는 것이 쉽지는 않다.


branch 생성하기



$ git branch : 작업중인 work directory의 branch들을 보여준다.

master branch는 처음 git을 시작할 때 만들어지는 branch로 뿌리같은 역할을 한다.


$ git branch "브랜치 명" : branch를 새로 만든다.


$ git checkout "브랜치 명" : 작업할 branch를 옮긴다.

위의 디렉토리 경로를 보면 (master) -> (exp)로 옮겨진 것과
$ git branch 명령어를 입력했을 때 *가 exp로 이동한 것을 확인할 수 있다.


branch 특징 알아보기



현재 exp branch 에서의 commit log를 확인해 보면 master branch의 commit log를 그대로 가져온 걸 볼 수 있다.

여기서 새로운 파일은 만든 뒤 commit을 하면 exp branch의 log에 추가될 것이다.


하지만 다시 master로 checkout 한 뒤 log를 보면 exp에서 commit한 내용은 찾아 볼 수 없다.

이 점이 바로 서로 다른 작업을 동시에 할 수 있고, 영향도 미치지 않는 branch의 가치 중 하나다.


branch 상태 확인



master에 새로운 commit을 추가한 다음


$ git log --branches --decorate --graph 를 입력하면 branch들의 commit 상태를 보기 쉽게 나타내 준다.

commit 중에 옆에 (exp)와 (HEAD -> master)가 붙은 commit은 해당 branch에서의 최신 commit이라는 의미이고,

HEAD -> 가 붙은 branch가 현재 작업중인 branch라는 의미이다.

맨 왼쪽에 초록색과 빨간색 선이 branch의 모양인 가지를 나타낸 것으로 *이 붙은 commit이 그 가지에서의 commit이다.


commit을 추가 해 보면 가지 graph도 바뀐다.


$ git log --branches --decorate --graph --online은 branch 상태를 보다 간략하게 나타내 준다.


branch 비교하기


$ git log "브랜치 1".."브랜치 2" : 브랜치 2를 중심으로 두 브랜치의 차이점을 보여준다.

위의 그림에서는 exp branch에만 있는 두 commit을 보여주고 있다.


만약 소스코드까지 보고싶다면

$ git diff "브랜치 1".."브랜치 2"를 입력하면 된다. 여기서도 뒤에 입력하는 브랜치 2가 중심이다.


728x90
반응형

'Git 공부' 카테고리의 다른 글

Git 에러 fatal: Not a valid object name: 'master'.  (0) 2019.03.11
Git branch merge  (0) 2019.03.11
Git commit의 원리, 저장소 관계  (1) 2019.03.09
Git add의 원리  (0) 2019.03.09
Git 변경사항 확인 git log -p, git diff  (0) 2019.03.09
댓글