Git 명령어와 브랜치 전략

Git 명령어와 브랜치 전략

배경

이번에 javascript 스터디그룹과, 새로운 프로젝트를 진행하면서 github사용법에 대해서 다시 한번 익혀보고 정리하고자 한다.
 

git checkout이란?

HEAD를 특정 브랜치나, 커밋을 가르키게하여 이동하는 명령어이다.
이를 이용하여 이전에 작업했던 커밋으로 이동할 수 있고 detaced HEAD(분리된 머리) 상태가 된다. 이 상태에서는 커밋을 다시 남기거나 브랜치를 새로 만들어서 당시 작업을 확인하고 이어나갈 수 있다.
 
 

vs reset

reset은 커밋과 스테이징 자체를 취소하는 방법이다.
 

vs revert

커밋 기록은 남겨두고 변경내역을 취소할 수 있다.
 

git 2.23이후 변경점

checkout은 switch/restore가 나오기 전에 쓰이는 명령어였고 너무 많은 기능을 담고 있었기에 브랜치를 변경기능(switch), 파일 복원기능(restore)으로 일부 기능이 분리되었다.
 

PR 브랜치 전략

notion image
 
깃허브는 기본적인 Merge 외에도 squash merge와 rebase 옵션을 선택할 수 있다.
merge 두브랜치를 합쳐 공통된 base를 만들어낸다
여러 브랜치가 존재하고 작업이 복잡해질 수 록 history를 읽기 어려워진다.
rebase보다 merge conflict가 발생이 적다
 

squash merge

 
notion image
 
squash는 브랜치의 커밋을 하나로 합치고 새로운 커밋을 만들어 마스터에 합쳐준다.
commit history를 깔끔하게 할 수 있다.
 

rebase

커밋들은 master 브랜치 맨뒤로 일렬로 붙여준다
깔끔하고 선형적인 commit history를 만들 수 있다.
이전 history가 재정렬되기 때문에 merge comfilct와 데이터 유실의 위험성이 존재한다.
 
 

 
참고