브랜치 정복

깃 브랜치 이름 규칙
꼭 이대로 따라할필요는 없고 통상적으로 이렇게 브랜치 이름을 한다고한다.
- 기능개발 : feature/login, feature/select-product
- 출시준비 : release-1.3, release-1.4
- 긴급수정 : hotfix-1.2.1
이렇게 만들어 놓고 commit를 해야 브랜치가 된다.
커밋을 안하면 status 를 했을때 브랜치가 인식되지않는다.
또 깃허브에 브렌치를 인식하게끔 push 를 해주면 깃허브에 브랜치가 올라가있는걸 볼수있다.
git push origin hotfix (명령어를 써 브랜치를 푸쉬해준다.)
이렇게 푸쉬해준다음에 깃허브 레포지토리에 들어가 보면 compare & pull request 라는 문구가 새롭게 뜬걸
알수있는데, 브랜치가 아주잘 생성된것이다.
깃 브랜치 전략이란 ?
깃 플로우라고도 불리는데, 브랜치를 어떤형식으로 할것인가. 이다.
브랜치 전략
- fast - forward
A branch에서 B branch 를 생성한 시점부터,
- A branch 에는 아무것도 추가 구현을 하지않고
- B branch 에만 추가구현을 한뒤
B branch 와 A branch 를 합치면 -> A branch 에 B branch가 붙으면 끝나는 전략이다.
- 3ways
일반적으로 가장많이 사용하는 전략
MAIN branch 에서 B branch를 생성한 시점부터,
- MAIN branch에도 추가구현을 하고
- B branch 에도 추가구현을하고
A branch 와 B branch 를 합치면 -> A branch 와 B branch 가 서로 비교하여 바뀐것을 정리하여 합치는 전략이다.
브랜치 생성후 pull request & merge 하는법.
먼저 위에 상황처럼 브랜치를 만들고 푸쉬를 해놓은 상태에서
깃허브 사이트에 들어가면
compare & pull request 라는 문구가 생긴것을 알수있다. 클릭한뒤에 들어가면
이렇게 상단에 합병이 가능하다는 초록문구와 밑에 description 기입할수 있는 내용이 있다.
description 에는 보통 어떤기능을 추가 했는지 뭘 업데이트했는지 쉽게 알아볼수있게 정확하게 잘전달되도록
문구를 써줘야 한다. 그후 우측하단에 create pull request 를 누르면 병합할수 있다 !
그 후 깃허브를 확인해보면
병합이 되있는걸 확인할수있다 !
이런 절차를 거치며 깃허브에서 병합후에 기존에 브랜치를 바로 삭제할수있다. 삭제하고 되돌리기도 가능하니 부담없이 삭제해도 될듯하다.
그후 다시 vscode로 돌아와 깃허브에 병합된걸 깃에 동기화할 필요가 있는데 아래 캡쳐화면에 명령어 처럼 하면된다.
기존 브랜지에서 메인 브랜치로 이동후에
git pull origin main
로 가져와 주면 파일이 다른 브랜치에서 수정된게 main 에 잘 바뀐걸 볼수있다.
그후 로컬에서 브랜치를 삭제해줘야하는데 명령어는 이러하다.
git checkout (삭제할브랜치)로 이동
git branch -d (브랜치명)
또는 main 브랜치에서
git fetch -p
를 해줘 깃(로컬)에 동기화 해준후 삭제를 해줘도 된다 이렇게 하면 remote까지 사라지는걸 볼수있다.
이후 vscode에서 history를 확인해보면 아래 사진처럼 잘 된걸 볼수있다.
merge 충돌상황을 알아보도록 하자
vscode에서 위의 사진처럼 브랜치로 병합을 한뒤에 main 에 같은 파일을 병합할려고 하면 밑에 사진처럼 나온다.
여기서 맞는 부분만 냅두고 다음으로 넘어가면
병합이 가능해진다.
이렇게 충돌상황에서의 마무리를 짓고 git history를 보면
아주 잘된것을 확인할수 있다.
git branch 명령어 정리.
git branch = 현재 브랜치 확인 git branch (브랜치이름) = 브랜치생성
git checkout (브랜치명) = 브랜치로 이동
git status = 현재 브랜치위치확인 및 상태(수정)확인
git branch -d (브랜치명) = 브랜치 삭제
커밋하기전까진 브랜치가 변경내용을 공유 커밋하면 해당브랜치만 커밋적용 !
git branch -r 깃허브에 있는 원격브랜치 확인
git push 레포지토리별칭 브랜치명 / 깃허브에 브랜치 넣기 !
git fetch -p = 가지치기 (동기화하는 명령어_)
git chenckout -t origin/feature/1 = 원격저장소
오늘 협업의 중요한 branch 를 배우면서 느낀점은 아직까지 낯설어서 그런가 뒤돌면 까먹고 그러는거같다.
하지만 계속 상황에 노출되고 익숙해지면 잘할수 있을것같다.