협업을 위한 git 활용팁입니다.
git blame
범인색출용이라는 불명예를 가지고 있는 명령어이지만 작성일, 작성자, 커밋 메시지 확인을 위해 없어서는 안되는 명령어입니다. 저는 주로 vim-fugitive를 통해 각 줄에 1대1 매핑되는 횡분할 pane으로 확인합니다.
한줄씩 add하기
한줄 한줄 git add를 하면 커밋을 더 잘게 나눌 수 있습니다. cli보다는 IDE의 기능이나 tig 사용을 추천합니다.
원자적 커밋
한줄 add가 필요한 이유입니다. 최대한 커밋을 잘게 나눠 나중에 log나 blame으로 확인할 때 어떤 작업을 한 코드인지 커밋 메시지로 확인하기 쉽게끔 합니다. 또한 롤백 시 정밀한 체크포인트로서의 기능도 합니다.
충돌 해결은 gui로
작업 범위를 아무리 잘 나누더라도 동시에 진행되던 브랜치 중 한 브랜치가 머지되면 다른 브랜치들에서 충돌이 발생할 가능성이 있습니다. 이 때 충돌난 부분이 많다면 cli보다는 gui, 혹은 tig 사용을 추천합니다. 제가 사용하는 방법은 다음과 같습니다.
새로운 브랜치로 cherry-pick하여 리베이스
- develop에서 새로 브랜치 생성
- 기존 브랜치의 커밋을
cherry-pick
- 새로 생성한 브랜치를
force push
만약 cherry-pick에서 충돌이 발생하면
- 짧은 코드라면 직접 코드 입력하는 방법도 있습니다.
hunk 단위 탐색
When comparing two files, diff finds sequences of lines common to both files, interspersed with groups of differing lines called hunks.
git 변경점에서 변경된 라인이 인접하여 묶인 그룹의 단위를 hunk라고 합니다. 코드 리뷰나 과거 커밋 확인 시 vim이나 IDE에서 hunk 단위로 건너뛰며 코드를 탐색하는 단축키를 사용하면 변경점을 쉽게 찾는 동시에 전체 코드를 함께 확인할 수 있습니다.