← 전체 글로 돌아가기

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을 설정하는 것도 좋은 방법이다.