Git Branch
깃 브랜치는 중요한 내용이다.
다음 두상황을 가정해보자
1. 혼자 작업할 때 : 현재 홈페이지를 만들고 있다가 실시간 알림기능을 추가하고 싶어졌다.
하지만 한번에 만들수 있을거라는 확신이 없어서 무수히 많은 commit을 해야 완성할 수 있을 것 같다.
그리고 실패시에는 이전 commit으로 돌리고싶은데 현재 master의 log가 지저분해지는것은 원치 않는다.
2. 협업할 때 : A와 B 두명이서 협업을 하는 상황이다. github에 코드를 올려놓고 각자 다운받아
코딩을 하고 있다. 두명이 각자 다른 파일을 작업하면 별 걱정이 없겠지만,
하나의 파일을 둘이 동시에 작업하고 있다.
문제는 이렇게 여러명이 같은파일을 작업해서 commit 한 후 동시에 github에 push를 하면 충돌이 생긴다는 것이다.
왜냐하면 A가 한 commit은 B에겐 없고 B가 한 commit은 A에게 없어서
Github 서버는 어떤것이 올바른 commit인지 알 수 없다.
위와 같은 상황에서 우리는 branch 기능을 사용한다.
기본적으로 생성되는 master 브랜치 말고 다른 브랜치를 만들어 사용하는 것이다.
위의 예시가 다른 브랜치를 사용하는 이유고, 또 하나의 이유는 실제 환경에선 master 브랜치에
배포 준비가 된 commit 들만 남기는 경우가 많기 때문이다.
예를 들자면, Github의 origin에 master 브랜치의 commit을 push하면 홈페이지가 업데이트 된다.
만약 실수로 에러가 있는 master 브랜치의 commit을 push하면 에러가 난다.
그런 상황을 막기 위해, 아예 다른 브랜치를 만들어 작업하면
실수로 에러가 있는 브랜치를 push 하더라도 master와는 별개이기 때문에 안심할 수 있다.
git branch 생성
git branch [브랜치명] 이다.
잘 생성 되었나 확인하려면 git branch를 입력하자. 앞에 * 표시가 있는게 현재
HEAD 가 있는 branch이다.
git checkout
새로만든 브랜치에서 작업하려면 브랜치로 HEAD를 옮겨야 한다.
이때 하용하는 명령어가 git checkout [브랜치명] 이다.
git checkout은 이전에 봤듯이 파일에 사용했을때는 Modified(커밋준비완료)에서 Unmodified로
상태를 변경하는 명령어였다. 브랜치에 사용하는 경우는 브랜치간 전환을 한다.
수정 후에 git commit -am "aa" 라고 적어보자.
브랜치를 생성하기 전까지는 master와 공유하지만 그 다음부터는 별개의 프로젝트라고 생각해도된다.
이제 여러명의 사람들이 작업할 때에는 각자 브랜치를 만들어 따로 작업하면 된다.
한 사람의 작업이 다른 사람에게 영향을 미치지 않는다.
각자 작업하다가 마치면 최종적으로 하나로 합쳐야한다.
이제 master브랜치에서 하나로 모아준다.
다시 git checkout master로 master 브랜치로 돌아간다.
3탄은 다음시간에~