Git 브랜치의 이해 (3) - Git 브랜치 이동 및 이슈 발생, 실습
안녕하세요~ 항상 나아가는 개발자 pink_salt 핑솔입니다!
코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다.
이번엔 git 브랜치 이동과 이슈가 발생했을 떄 어떻게 하는지 알아보는 시간을 갖겠습니다.
이번엔 '실무자가 알려주는 Git 활용한 프로젝트 관리'의 Git 브랜치의 이해 강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하겠습니다.
이전 게시물에서 feature-login이라는 브랜치를 git branch feature-login이라는 명령어를 통해 만들었습니다.
이제 feature-login으로 브랜치를 이동해보겠습니다.
브랜치 이동
git checkout feature-login(이동할 브랜치명)
git checkout (브랜치명)을 통해서 현재 작업 중인 master branch에서 feature-login 브랜치로 바뀐 것을 알 수 있습니다.
HEAD는 현재 작업중인 브랜치를 가리킵니다.
그래서 HEAD -> feature-login으로 된 것을 볼 수 있습니다.
그림으로 표현하자면 이렇게 변한 것을 알 수 있습니다.
[실습] 브랜치 이동 후 커밋 생성
일단 브랜치를 이동한 상태에서 LoginService.java라는 파일을 만들어서
"write login code 1"을 작성합니다.
작성할 때는 i를 먼저 입력하여 입력 상태로 만든 후 입력해야합니다.
그리고 마지막 코드를 작성하고 저장하고 나갈 때는 Esc + :wq 누르면 됩니다.
그리고 git add를 통해서 스테이징 영역에 올려 놓습니다.
git commit 작업을 진행을 할 것인데 커밋 메시지와 함께 진행할 것입니다.
커밋 완료 후 git log를 통해 커밋 히스토리를 보겠습니다.
마지막 3번째 커밋은 feature-login 브랜치에서 진행된 것을 확인할 수 있습니다.
그림으로 표현하자면 밑에와 같습니다.
master 브랜치로 이동
다시 master 브랜치로 이동하기 위해서는 위에서 쓴 것과 같이 git checkout을 사용하면 됩니다.
git checkout master
이러면 다시 master 브랜치로 이동하게 됩니다.
git log로 확인하면 LoginService.java가 보이지 않는 것을 확인할 수 있습니다.
브랜치가 master로 바뀌었기 때문에 feature-login 브랜치에서 한 커밋은 보이지 않는 것이 맞습니다.
밑의 그림과 같이 HEAD가 master를 다시 가리키는 것을 알 수 있습니다.
이제 master 브랜치에서 4번째 커밋을 진행해보겠습니다.
이러면 3번째 feature-login 브랜치에서 한 커밋은 안보이고 4번째 커밋까지 포함해서 보이게 됩니다.
그림으로 표현하면 아래와 같습니다.
모든 브랜치 history 확인하려면?
git log --all --graph
all 옵션은 모든 브랜치를 확인하고자 하는 것이고
graph 옵션은 그래프로 어떻게 분기되고 있는지 확인할 수 있습니다.
개발 중 이슈가 발생하면?
브랜치 전략은 기업, 조직마다 다르기 때문에 일단 강의의 실습에 맞추어 진행하겠습니다.
- 일단 issue 브랜치를 생성하겠습니다.
- 이 때, 브랜치를 생성하고 바로 브랜치를 이동할 수 있는 명령어를 사용하겠습니다.
-
git checkout -b issue
- git checkout -b 브랜치명을 작성하면 브랜치가 생성되고 바로 이동됩니다.
[실습] issue 브랜치에서 커밋을 생성합니다.
- vi MainService.java에 "fix issue-number 1"을 작성합니다.
- git add MainService.java를 진행합니다.
- git commit -m "Commit 5 on issue branch"
- git log로 확인
그림으로 표현하면 밑에 그림과 같습니다. 지금 HEAD는 issue 브랜치를 가리키고 있습니다.
다음 게시물에서는 브랜치 병합 및 충돌 해결에 대해 공부하고 정리해서 다시 찾아뵙겠습니다!
열심히 나아가는 개발자 핑솔이었습니다.
go go!
코드프레소 URL: https://www.codepresso.kr/
프리미엄 IT 교육 서비스 - 코드프레소
www.codepresso.kr