Git
Git push 전에 원격 변경사항 fetch하기
Git으로 작업할 때 충돌을 미리 막으려면 push 전에 원격 변경사항을 확인하는 습관이 필수다.
팀 프로젝트에서 Git을 쓰다 보면 push 직전에 실수로 충돌을 만드는 경우가 자주 있다. 로컬에서 잘 작동하는 코드가 운영 브랜치에는 다른 사람의 커밋이 쌓여 있을 수 있기 때문이다.
먼저 원격 상태 확인하기
로컬과 원격이 얼마나 차이 나는지 보는 게 가장 빠르다. push하기 전에 이 한 줄을 먼저 실행한다.
git fetch origin
fetch는 원격의 새 커밋을 받아오기만 하고 로컬 코드는 건드리지 않는다. 그 다음 현재 브랜치와 원격 브랜치의 차이를 본다.
git log origin/main..HEAD
이 명령은 로컬에만 있는 커밋을 보여준다. 반대로 원격에만 있는 건:
git log HEAD..origin/main
충돌 가능성 미리 확인하기
fetch 후에 rebase나 merge를 미리 해보면 충돌이 있는지 알 수 있다. fast-forward가 되면 안전한 신호다.
git rebase origin/main
만약 여기서 충돌이 나면 push하기 전에 해결할 수 있다. 충돌을 해결한 뒤 rebase를 계속한다.
# 충돌을 해결한 뒤
git add .
git rebase --continue
Push 전 최종 확인
rebase가 깔끔하게 끝났으면 이제 push해도 안전하다.
git push origin main
작은 습관 하나로 나중에 복잡한 merge conflict를 피할 수 있다. 특히 여러 사람이 같은 브랜치에서 작업할 때는 push 전 fetch를 자동으로 하는 git hook을 설정하는 것도 좋은 방법이다.