브랜치
- git branch 모든 브랜치 보기
- git branch --all 서버 포함하여 모든 브랜치 보기
- git branch --merged 현재 브랜치에 머지가 된 브랜치 보기
- git branch --no-merged 머지가 되지 않은 브랜치 보기
- git branch -d 브랜치명 브랜치 삭제
- git branch --move 브랜치명1 브랜치명2 브랜치 이름 변경
- git log main..test main과 test 브랜치 사이의 커밋만 보기
머지
fast-forward merge
- 머지를 할때 원래 브랜치의 변경사항이 없어서 새로운 브랜치로 포인터를 옮기기만 하면됨
- 깔끔함
- 머지가 되었다는 커밋이 남지 않음
ㄴ git merge --no-ff 옵션 사용시 머지 관련 커밋 생성
three-way merge
- fast-forward merge가 불가능한 경우
- git merge 시에 자동으로 머지 커밋 생성
conflict 해결
- 같은 파일 동시에 수정시 오토 머지 안됨
- 충돌 부분 해결 후 git add로 파일 추가
git merge --abort : 머지 취소
git merge --continue : 머지 계속 (머지 커밋 생성)
Rebase
- three-way merge와 같은 상황에 있을때 베이스를 변경하여 fast-forward merge를 가능하게 해줌
- 다른 개발자와 함께 브랜치 위에서 작업하고 있고 이미 히스토리가 서버에 업로드되어있다면 업로드되어있는 히스토리는 리베이스 하면 안됨
- 포인터를 변경하면서 새로운 커밋이 생기기 때문에 나중에 merge conflict이 생길 수 있음
git rebase main 현재 브랜치의 베이스를 최신 main 브랜치로 변경
git rebase --onto main 브랜치1 브랜치2 브랜치1에서 파생된 브랜치2의 베이스를 최신 main 브랜치로 변경 (브랜치2를 브랜치1에 상관없이 main 브랜치에 머지하고 싶을때 사용)
기타
- git cherry-pick 해시코드 특정한 커밋만 가지고 오고 싶을 때 유용