gyue 님의 블로그
[Learn Git Branching] 다음 단계로 본문
개요
Git의 기본 개념(commit, branch, HEAD)을 이해한 이후,
이번 단계에서는 Git의 핵심 동작 방식인 “커밋 사이 이동”과 “HEAD의 역할”에 대해 본격적으로 학습해보았다.
이전 단계에서는 Git의 구조를 이해하는 데 집중했다면, 이번 단계에서는 그 구조를 실제로 움직이며
- 커밋 간 이동
- HEAD의 변화
- 브랜치 위치 조작
- 작업 되돌리기
까지 다뤄보는 과정이었다.
즉, Git을 단순히 이해하는 것을 넘어 직접 조작할 수 있는 단계로 넘어가는 과정이라고 볼 수 있다.
HEAD의 역할 다시 이해하기
HEAD는 현재 내가 작업 중인 위치를 가리키는 포인터이다.
일반적으로는 다음과 같은 구조를 가진다.
즉, HEAD는 브랜치를 가리키고,
브랜치는 특정 커밋을 가리킨다.
Git에서 commit, checkout, merge 같은 대부분의 명령어는
이 HEAD를 기준으로 동작하기 때문에
HEAD의 개념을 이해하는 것이 매우 중요하다.







HEAD 분리 (Detached HEAD)
특정 커밋으로 직접 이동하면
HEAD는 브랜치가 아닌 커밋을 직접 가리키게 된다.
이 상태를 Detached HEAD 상태라고 한다.
이 상태에서는
브랜치에 속하지 않으며
commit을 해도 브랜치가 이동하지 않고
작업이 고립될 수 있다
즉, 실험적인 작업에는 유용하지만
일반적인 개발 흐름에서는 주의가 필요하다.
상대 참조 (Relative Reference)
Git에서는 커밋을 이동할 때
복잡한 해시값 대신 상대적인 위치로 이동할 수 있다.







^ (부모 커밋)
→ main의 바로 이전 커밋으로 이동
~ (여러 단계 이동)
→ 현재 위치에서 3단계 이전 커밋으로 이동







이 기능을 통해
커밋 히스토리를 직관적으로 탐색할 수 있으며,
Git 트리를 더 쉽게 이해할 수 있었다.
HEAD를 기준으로 이동하기
HEAD 자체도 이동 기준으로 사용할 수 있다.
git checkout HEAD~2
이 방식은 현재 위치를 기준으로
“시간을 거슬러 올라가는 느낌”으로 커밋을 이동할 수 있게 해준다.
브랜치 강제 이동
브랜치는 단순한 이름이 아니라
특정 커밋을 가리키는 포인터이기 때문에
강제로 위치를 바꿀 수 있다.
→ main 브랜치를 현재 위치에서 3단계 이전으로 이동
이 기능은
잘못된 브랜치 흐름을 수정하거나
구조를 정리할 때 매우 유용하다.
Git에서 작업 되돌리기
이번 단계에서는
작업을 되돌리는 두 가지 방법도 학습하였다.

git reset
현재 브랜치를 이전 커밋으로 이동시킨다.
특징:
히스토리가 변경됨
이전 커밋이 사라진 것처럼 보임
주로 로컬 작업에서 사용
즉, “과거로 되돌리는 방식”이다.


git revert
이전 커밋을 취소하는 새로운 커밋을 생성한다.
특징:
히스토리를 유지한다.
협업 환경에서 안전
취소 기록이 남는다.
즉, “기록을 유지하면서 되돌리는 방식”이다.




reset과 revert의 차이
이번 단계에서 중요한 포인트는
두 명령어의 차이를 이해하는 것이었다.
reset → 히스토리를 되돌림 (위험하지만 효과적)
revert → 새로운 커밋으로 취소 (안전)
상황에 따라 적절하게 사용하는 것이 중요하다.
이번 단계에서 느낀 점
이번 단계에서는 Git이 단순한 저장 도구가 아니라
“위치를 이동하고 흐름을 조작하는 시스템”이라는 것을 느낄 수 있었다.
특히 다음과 같은 점이 인상 깊었다.
- HEAD를 이해하면 Git 구조가 명확해진다.
- 브랜치는 단순한 이름이 아니라 위치 정보이다.
- Git은 커밋을 이동하면서 사용하는 도구이다.
- 되돌리는 방식도 상황에 따라 다르게 존재한다.
처음에는 개념이 많아 보였지만, HEAD를 중심으로 이해하니
모든 명령어가 하나의 흐름으로 연결되었다.
정리
이번 단계에서 학습한 핵심은 다음과 같다.
- HEAD는 현재 작업 위치를 나타낸다.
- detached HEAD 상태가 존재한다.
- 상대 참조(^, ~)로 커밋 이동이 가능하다.
- 브랜치는 강제로 이동할 수 있다.
- reset과 revert는 되돌리는 방식이 다르다.
Git은 “위치 이동과 히스토리 조작”이 핵심이다
'블로그 & 기술문서' 카테고리의 다른 글
| [Learn Git Branching] 종합 선물세트 (0) | 2026.04.04 |
|---|---|
| [Learn Git Branching] 코드 이리저리 옮기기 (0) | 2026.04.04 |
| [Learn Git Branching] git 기본 (0) | 2026.04.04 |
| Nuclei를 활용한 취약점 점검 자동화 (0) | 2026.03.31 |
| Dockerfile Study (0) | 2026.03.31 |