인프런의 강민철님의 모두의 깃 깃허브 강의를 참조하였습니다.
git branch
브랜치는 어떤게 있고 head는 어디를 가르키는지 확인하고 싶으면 위와 같은 명령어를 작성하면 된다.
git branch <브랜치 이름>
브랜치 생성 명령어는 위와 같다. 위의 명령어를 입력하고 잘 생성되었는지 git branch
로 확인해보자.
git checkout <브랜치 아름>
이제 생성한 브랜치로 작업을 진행할려면 체크아웃을 진행해야 한다. 체크아웃 명령어는 위와 같다.
⚠️ 주의
여기서 주의사항이 있다. git log를 할때 주의를 해야하는데 예를 들어 foo 브랜치에 커밋을 진행하고 master 브랜치로 체크아웃후 log를 확인해보면 foo브랜치에서 만든 커밋로그들은 안 보일 것이다.
왜냐하면git log
명령어는 현재 브랜치 최신 커밋만 보여주고 다른 브랜치 커밋들은 안 보여주기 때문이다.
다른 브랜치 커밋도 확인하고 싶으면git log --branches
로 입력하면 잘 보일 것이다.
여기서 더 하나 알아둬야 할께 브랜치 생성과 동시에 체크아웃을 진행할려면 아래와 같이 입력하면 된다.
git checkout -b <브랜치 이름>
git merge <합칠 브랜치 이름>
브랜치끼리 병합을 할려면 병합할려는 브랜치가 아닌 합쳐질 브랜치로 체크아웃 후 위의 명령어를 입력하면 된다.
git branch -d <삭제할 브랜치 이름>
병합을 했으면 이제 합쳐진 브랜치는 사용 안 하면 삭제를 해줘야 할 것이다. 위와 같이 입력하면 브랜치 삭제가 가능하다.
merge를 하다보면 충돌이 빈번히 발생하기 마련이다. 이제 명령어로 어떻게 충돌을 하는지 살펴보자. 일단 master브랜치에 b.txt를 생성후 bar 브랜치를 생성하고 각각 b.txt를 다르게 수정해보자.
그리고 merge를 진행하면 아래와 같이 경고표시가 뜰 것이다.
그리고 b.txt를 가보면 소스트리때 봤던 것과 똑같이 아래와 같이 표시가 될것이다.
여기서 head와 ===사이는 현재 브랜치의 수정한 파일의 내용이고 그 아래는 다른 브랜치의 내용이다. 여기서 우리가 선택을 해주면 된다. 예를 들어 Master를 반영한다고 하면 텍스트 파일에 Master로 적고 저장을 한다. 그리고 다시 커밋을 진행하면 된다.
그러면 위와 같이 vi창에 자동으로 커밋 메세지가 작성이 될 것이고 :wq를 눌러 저장후 나오면 된다.
이제 로그를 확인해보자.