Quick Reference
그래프의 선은 커밋 부모 관계이고 라벨은 특정 커밋을 가리키며, 공유 브랜치에는 합의 없이 rebase·force push를 적용하지 않습니다.
| 확인하려는 질문 | 그래프에서 볼 것 | 다음 행동 |
|---|---|---|
| 현재 브랜치는 어디에 있나 | 현재 브랜치 라벨과 가장 앞 커밋 | 작업 기준 브랜치를 확인합니다. |
| feature는 main에서 얼마나 뒤처졌나 | 두 브랜치가 갈라진 지점과 각 끝 커밋 | fetch 뒤 통합 방법을 결정합니다. |
| 이 커밋에 어떤 파일이 바뀌었나 | 커밋 선택 후 파일 목록과 diff | 변경 범위와 의도를 검토합니다. |
| merge가 실제로 끝났나 | merge commit 또는 rebase 뒤 부모 관계 | 원격 브랜치와 비교해 확인합니다. |
| 히스토리를 다시 써도 되나 | 원격에 공유된 브랜치인지 | 공유됐다면 팀 합의 없이 rebase/force push하지 않습니다. |
그래프를 판단에 쓰기
그래프의 선은 꾸밈이 아니라 커밋의 부모 관계입니다. 브랜치 라벨은 특정 커밋을 가리키고, merge commit은 둘 이상의 부모를 가질 수 있습니다. 따라서 "선이 main과 만났다"는 인상만으로 병합 완료를 판단하지 말고, 현재 브랜치와 원격 브랜치의 커밋 차이도 봐야 합니다.
GitKraken에서 그래프의 커밋을 선택한 뒤 파일 diff를 보면, 그 커밋 하나가 무엇을 바꿨는지 빠르게 확인할 수 있습니다. 코드 리뷰 전 변경의 출처를 찾거나, 예상 밖의 merge가 들어간 시점을 찾을 때 유용합니다.
git log --oneline --decorate --graph -20
git log origin/main..HEAD
git diff origin/main...HEADGUI와 이 명령은 같은 커밋 그래프를 읽습니다. 화면과 터미널 결과가 다르게 보이면 먼저 다른 저장소나 다른 브랜치를 보고 있지 않은지 확인합니다.
작업을 실행하기 전
fetch는 원격 추적 브랜치를 갱신할 뿐 현재 파일을 바꾸지 않습니다. pull은 원격 변경을 현재 브랜치에 통합하고, push는 로컬 커밋을 원격에 보냅니다. GitKraken의 그래프에서 이 세 동작을 같은 "동기화"로 뭉뚱그려 보지 않아야 충돌과 비정상적인 diverged 상태를 판단할 수 있습니다.
rebase, reset, force push는 모두 그래프 모양을 바꾸거나 원격 기록을 덮을 수 있습니다. 특히 rebase 뒤에는 커밋 ID가 바뀌므로, 이미 공유한 브랜치라면 원격과 동료의 기반이 끊길 수 있습니다. 그런 작업은 버튼을 누르기 전 현재 브랜치, 원격 추적 상태, 팀의 force push 규칙을 확인한 뒤 실행합니다.
주의할 점
그래프가 복잡하다는 이유만으로 히스토리를 정리하지 마세요. merge commit이 필요한 팀 정책일 수 있고, rebase가 필요한 상황도 개인 브랜치에 한정될 수 있습니다. UI에서 보이는 라벨과 색상보다 커밋 ID, 브랜치 이름, 원격과의 앞섬·뒤처짐 상태를 기준으로 판단하세요.
참고 링크
3 sources