브랜치는 포인터다.
HEAD는 현재 상태를 가리키는 포인터다.
When to use
같은 기능을 새 버전으로 재구성해보고 싶을 때
(귀차니즘 개발자들은, 그냥 있던 코드를 주석처리하고 새로 만들고 테스트한다. 간편하지만 지저분한 방법이다.)
같은 기능을 여럿이 만들고 비교하고 합쳐보고 싶을 때 쓴다.
📝 Tip.
보통 하나의 개발 브랜치는 한 사람만 작업해서 올리는 것이 좋다.
따라서, 여럿이 작업하는 Repository 에는 미리 브랜치 규칙을 정하길 권장한다.
Local 상에서 branch 명령어
이동 (전환)
$ git branch <target_branch_name>
목록 조회
$ git branch
삭제
$ git branch -d <target_branch_name>
생성
$ git branch <new_branch_name>
생성 + 이동
# 부모 브랜치는 Optional, 없으면 현재 브랜치를 부모 브랜치로 인식
$ git checkout -b <new_branch_name> <parent_branch_name>
이름 변경
$ git branch -m <old_name> <new_name>
Remote repository branch 명령어
생성
현재 설정된 브랜치에서 push 할 경우 remote origin 에 같은 이름의 브랜치가 자동생성됨.
ex) 현재 로컬 브랜치 이름이 'develop'인 경우
remote 에 master 밖에 없어도 develop branch가 자동생성됨.
$ git push -u origin <branch_name>
삭제
$ git push origin --delete <target_branch_name>
일반적인 fast-forward merge 시 흐름은 다음과 같다.
- local branch 생성
- 작업 & commit & push
- 부모 branch로 이동
- merge
- local branch 삭제
- remote branch 삭제 (Optional)
fast-forward merge는 부모 branch 는 변화가 없고 가지 브랜치만 변화가 있을 때 유용하다.
부모에 변화가 있을 경우 (다른 가지가 먼저 merge하여 부모 브랜치에 변화가 생긴 경우도 포함)
새로운 merge request 로 합치는 로그가 필요하다.
위 과정을 아래 명령어를 참조해서 직접 적용해보자.
Squash and merge
Merge 또는 Pull Request 의 옵션으로 브랜치 병합의 커밋 히스토리를 하나의 커밋 메시지로 묶는다.
하나로 통합되는 메시지는 Merge | Pull Request 제목에 의해 결정된다.
Source Branch 의 커밋 히스토리가 별로 중요하지 않을 때 사용한다.
🔗 Reference
'기타 > git' 카테고리의 다른 글
[Git] config (0) | 2021.11.11 |
---|---|
[Git] Security Vulnerabilities (보안 문제 해결) (0) | 2021.05.12 |
gitlab Setting (gitlab 시작하기, 설정) (0) | 2020.01.13 |
error:src refspec master does not match any 해결 (0) | 2020.01.09 |
Git 고급 명령어 (0) | 2020.01.09 |