실무를 하면서 github보다는 gitlab을 사용할 일이 많아졌다. 개인 pc에서 github를 사용할 땐 레포를 혼자 사용하다보니 누군가와 하나의 레포를 같이 쓸 일이 없었는데 gitlab을 사용하면서부터는 branch를 사용하여 현업을 하는 일이 일상이 되었다.
gitlab을 사용하면서 알게 된 branch에 대해 앞으로 버벅거리지 않기 위해 간략하게 정리를 해 둔다.
branch를 생성하기 전까지인 원격 레포와 로컬 폴더를 연결하는 방법은 깃허브를 시작하는 것과 동일하며 이는 이전에 작성한 깃허브 시작하기 게시글을 통해 확인할 수 있다.
https://iambeginnerdeveloper.tistory.com/17?category=917302
원격 레포와 로컬 폴더를 연결을 했다면 branch를 만들 차례이다.
1. git pull
branch를 생성하기 위해 gitlab project master가 올린 레포를 pull하여 가져와야 한다.
git pull "원격 레포 https 주소"
pull하여 레포를 가져왔다면 branch 목록을 확인하는 명령어인 git branch 를 입력하여
원격 레포와 연결된 master branch가 생성되어 있는 것을 볼 수 있다.
2. git branch "만들 branch 이름"
branch가 master에 위치하고 있다면 새로운 branch를 생성하여야 한다.
git branch "만들 branch 이름"
branch를 생성하고 난 후 branch 목록을 확인하면 새로 생성한 branch를 목록에서 볼 수 있다.
3. git checkout "branch 이름"
git checkout 명령어를 사용하여 생성한 branch와 master branch를 왔다갔다 할 수 있다.
git checkout "branch 이름"
master branch에서 새로 생성한 hjyoo branch로 이동된 것을 볼 수 있다.
4. branch에서 작업 후 add, commit
생성한 branch에서 파일을 수정, 삭제, 추가하더라도 병합을 하기 전까지는 master branch에 아무런 영향을 주지 않는다. 때문에 데이터 손실을 걱정할 필요가 없다.
branch에서 작업한 내용을 master에 병합을 하기 위해서는 깃허브에서 add, commit 한 것과 같이 branch의 변경 사항을 업데이트 해 주어야 한다.
# 파일 상태 체크
git status
# 특정 파일만 add 할 때
git add "파일명"
# 모든 파일을 add 할 때
git add -A
# 커밋
git commit -m "커밋 메세지"
5. git merge
생성한 branch에서의 작업을 모두 커밋했다면 다시 master branch로 돌아와 작업을 진행했던 branch와 병합을 해 주어야 한다.
# master branch로 돌아가기
git checkout master
# 작업을 진행한 branch를 master에 병합하기
git merge "병합할 branch 이름"
# 원격 레포에 push
git push origin "병합한 branch 이름"
branch의 변경 사항을 master에서 병합을 했다면 원격 레포에 push를 해주면
branch의 작업 내용이 반영된 채로 원격 레포에 커밋이 된다.
6. gitlab Merge Request
이후 gitlab 프로젝트에서 로컬에서 생성한 branch가 생성된 것을 볼 수 있다.
내가 로컬에서 생성하고 작업한 branch의 작업 내용만 커밋하여 push한 것이기 때문에 프로젝트 master의 branch에는 전혀 영향을 주지 않는다. 따라서 협업을 진행할 땐 팀원이 진행한 branch의 내용을 master에 병합을 할 필요가 있다.
이는 gitlab Merge Request를 사용하면 된다.
source branch 에는 내가 merge하려는 레포의 branch(hjyoo)를,
target branch에는 merge 대상인 branch(master)를 선택하여 Compare branches and continue 버튼을 클릭하면 된다.
이후 merge 내용을 작성하고 merge를 승인할 담당자를 지정하면 gitlab 프로젝트 branch merge 요청이 완료된다.
이때 merge를 하면서 내가 merge하려는 레포의 branch(hjyoo)를 삭제를 할지 해당 branch의 commit 로그를 그대로 가져갈지, 통합할지 선택할 수 있는데 이는 협업 특성에 맞게끔 선택을 하면 된다.
+)
추가로 gitlab branch를 사용하면서 유용하게 사용했던 명령어들도 함께 정리 해 둔다.
특정 branch만 clone하고 싶을 때
git clone -b "clone할 branch 이름" --single-branch "레포 hppts 주소"
특정 branch만 pull 할 때
git pull origin "pull할 branch 이름"
참고 링크 :
https://www.youtube.com/watch?v=FXDjmsiv8fI