라이프스타일
Git, 브랜치, diff와 복원
Git은 파일 이력, 브랜치는 변경 묶음, diff는 차이를 관리합니다. 대화를 재개한다고 파일이 복원되지는 않습니다.
읽는 데 약 15분 · 실습 30 분

이 글의 목차
Codex 학습 목차로 돌아가기Codex 학습 센터: 전체 튜토리얼 목차설치와 첫 작업부터 MD 지침과 고급 연동까지 60개 강의, 열 개 단원을 계획합니다. 수준, 환경, 목표, 명령으로 다음 글을 찾고 미게시 항목의 상태를 확인할 수 있습니다.전체 글 읽기
목표와 준비
터미널 경로터미널 경로와 프로젝트 루트Windows, macOS, Linux에서 실습 폴더를 만들고 현재 위치, 상대 경로, 절대 경로를 구분합니다.전체 글 읽기를 확인합니다. 작업 트리, 다음 commit용 index, 기록 버전은 별개입니다. 브랜치는 기록 줄이며 미커밋 사본이 아닙니다. 별도 경로는 worktreeWorktree와 작업 격리Worktree는 하나의 Git 저장소에 다른 브랜치의 작업 폴더를 만듭니다. 파일이 분리되어도 DB, 포트와 외부 서비스는 공유될 수 있습니다.전체 글 읽기를 쓰고 브랜치를 백업 완료로 보지 않습니다.
1단계: 독립 기준 만들기
다른 프로젝트 밖 codex-git-lab에 expected 다섯 파일을 두고 Windows PowerShell은 Get-Location, macOS/Linux는 pwd로 현재 경로를 확인하고 git --version을 실행합니다. 없으면 공식 OS 설치 후 터미널을 다시 엽니다. 기존 작업 저장소에서 이 초기화를 하지 않습니다.
git init -b main
git config user.name "Practice Learner"
git config user.email "learner@example.invalid"
git add index.html style.css app.js core.mjs core.test.mjs
git diff --cached --name-only
git commit -m "Add practice baseline"
git status --short
줄별 실행해 처음 다섯 파일과 commit 후 무변경을 확인합니다. 이름/예약 도메인은 실습 내 설정이며 GitHub 인증/global이 아닙니다. 기존 서명/hooks 요구면 따르거나 장애를 기록하고 전체 정책을 바꾸지 않습니다.
2단계: 브랜치에서 구별할 두 변경
git switch -c codex/title-lab
git branch --show-current
codex/title-lab을 확인한 뒤 index.html의 h1 문구 Make room for one small task.만 Plan one useful step.으로 바꾸고 CSS 끝에 다음 주석으로 별도 미커밋 작업을 흉내 냅니다. 결과는 제목이며 CSS는 보존하되 제목 commit에 섞지 않습니다. 둘 다 실습입니다.
/* KEEP-MY-NOTE */
git status --short
git diff -- index.html style.css
차이의 이전/새 줄과 주변을 보고 h1/CSS 주석만인지 확인합니다. 파일 수만으로 판단하지 않습니다. 다음 읽기 요청으로 기존 작업/대상을 식별하며 전체 차이 commit은 요청하지 않습니다.
Inspect this lab's current branch, status and diff without editing, staging or committing. The intended change is only the h1 title in index.html. The KEEP-MY-NOTE comment in style.css represents separate work and must be preserved. Explain what belongs in the title commit and what must stay outside it.
3단계: 한 파일 스테이지 후 복원 연습
git add index.html
git diff --cached --name-only
git diff --cached -- index.html
git diff -- style.css
이제 같은 파일의 두 버전을 비교합니다. git add를 다시 실행하지 말고 편집기에서 스테이징한 Plan one useful step.만 Compare one useful step.으로 바꿉니다. 아래 네 줄로 작업 트리, 인덱스, HEAD의 차이를 확인합니다.
git status --short
git diff --cached -- index.html
git diff -- index.html
git show :index.html
status에는 MM index.html과 미스테이징 style.css가 나와야 합니다. 이는 충돌이 아닙니다. Git status 공식 설명에 따르면 이 경우 첫 M은 HEAD 대비 인덱스 변경, 두 번째 M은 인덱스 대비 작업 트리 변경입니다. cached diff는 Make → Plan, 일반 diff는 Plan → Compare이고 show :index.html은 스테이징된 Plan을 읽습니다. 지금 일반 커밋을 해도 Compare가 자동으로 포함되지는 않습니다.
이어서 두 restore 명령을 원래 순서대로 실행합니다. 첫 줄은 스테이징만 해제하므로 디스크에 Compare가 남습니다. 둘째 줄은 이제 원래 제목이 들어 있는 인덱스에서 index.html을 복원합니다. 첫 줄을 건너뛰면 worktree restore는 스테이징된 Plan을 복원하므로 결과가 다릅니다. Git restore 공식 설명에 이 기본 원본 차이가 나옵니다. 버릴 대상이 연습용 제목인지 확인하고 CSS는 보존합니다.
git restore --staged -- index.html
git restore --worktree -- index.html
git status --short
git diff -- style.css
CSS만 변경/h1 복원/주석 보존을 확인합니다. 자기 취소로 별도 작업을 지우지 않습니다. --staged는 실제 편집을 버리지 않고 --worktree는 지정 파일을 복원 원본으로 덮으므로 다릅니다.
4단계: 제한 commit과 기록을 남긴 취소
제목을 다시 바꾸고 index.html만 스테이지해 차이를 봅니다. commit은 제목만, CSS는 미커밋으로 둡니다. show로 실제 대상을 확인하며 명령 성공만으로 범위가 맞다고 보지 않습니다.
git add index.html
git diff --cached --name-only
git diff --cached -- index.html
git commit -m "Update practice title"
git show --format=short --name-only HEAD
git status --short
취소 전 작업 트리를 확인합니다. 남은 실습 CSS 주석 보존을 검증한 뒤 이번에는 명시적으로 연습을 끝내 첫 명령으로 그 파일만 되돌립니다. 무변경과 HEAD 제목 commit을 확인해 revert합니다. 실제 별도 변경에는 그대로 적용하지 않습니다.
git restore --worktree -- style.css
git status --short
git log -1 --oneline
git revert --no-edit HEAD
git log -3 --oneline
git status --short
revert는 원래 변경을 남기고 반대 commit을 추가합니다. 이전 h1/기록3개/무변경을 기대합니다. 충돌이면 상태를 읽고 강제 선택하지 않습니다. 미완료 revert 취소는 git revert --abort 절차로 하고 재확인합니다.
명령 비교, 문제 해결과 검수
| 목적 | 명령 | 확인 |
|---|---|---|
| 미스테이지 보기 | git diff | 작업 트리/index |
| 다음 commit 보기 | git diff --cached | index/HEAD |
| 스테이지 해제 | git restore --staged -- index.html | 편집 유지 |
| 지정 미커밋 변경 버리기 | git restore --worktree -- index.html | 원본/경로 먼저 확인 |
| commit 취소 | git revert --no-edit HEAD | 대상/무변경 확인, 기록 추가 |
브랜치가 없으면 repository를 확인하고 예상 밖 파일을 add .로 묶지 않습니다. 한 파일에 변경이 섞이면 전체 스테이지에 모두 들어가므로 각 차이를 이해해 처리합니다. CSS 제외/두 restore/revert 기록이 검수 조건입니다. 그림1상태,2제한확정,3복원확인. 다음은 테스트와 PR테스트, 코드 리뷰와 PR테스트는 조건별 동작, 리뷰는 변경의 결함, PR은 통합 제안을 다룹니다. 테스트 통과, 승인과 병합은 별도 상태입니다.전체 글 읽기입니다.
Codex 학습 목차로 돌아가기Codex 학습 센터: 전체 튜토리얼 목차설치와 첫 작업부터 MD 지침과 고급 연동까지 60개 강의, 열 개 단원을 계획합니다. 수준, 환경, 목표, 명령으로 다음 글을 찾고 미게시 항목의 상태를 확인할 수 있습니다.전체 글 읽기
자세한 설명 보기
Branch to Diff to Commit
같은 주제의 글
라이프스타일
Codex 학습 센터: 전체 튜토리얼 목차
설치와 첫 작업부터 MD 지침과 고급 연동까지 60개 강의, 열 개 단원을 계획합니다. 수준, 환경, 목표, 명령으로 다음 글을 찾고 미게시 항목의 상태를 확인할 수 있습니다.
라이프스타일
실습: 작은 웹사이트 만들기
brief.md에서 Small Steps 할 일 사이트를 계획하고 추가·완료·삭제·필터·로컬 저장을 구현합니다. HTML·CSS·데이터 함수·화면 이벤트·시험을 분리하고 Node와 브라우저로 검증한 뒤 재시작·복원 인계 기록을 남깁니다.
라이프스타일
사용량과 효율: 재작업 줄이기
조건, 모델 선택, 시간, 결과를 기록해 불필요한 재시도와 과도한 문맥을 줄입니다.
이 글을 인용한 글
최신 여행 소식·가이드

가이드도쿄
도쿄 어디에 묵을까? 신주쿠·우에노·도쿄역·시부야·아사쿠사·이케부쿠로·긴자 일곱 지역 비교: 공항 교통, 숙박세, 짐 배송까지
도쿄 어디에 묵을까? 신주쿠, 우에노, 도쿄역, 시부야, 아사쿠사, 이케부쿠로, 긴자 일곱 지역을 같은 기준으로 비교한다. 나리타·하네다 공항에서 오는 방법, 교통 노선, 주변의 볼거리, 동네 분위기, 적합한 여행자를 비교표와 야마노테선 안내도로 살펴보고, 2026년 9월에 확인한 도쿄도 숙박세(2027년 4월부터 3%)와 공항 택배로 짐을 보내는 규정도 정리했다.
- 예산
- 호텔

가이드도쿄
도쿄 교통패스 선택법: Suica/Welcome Suica, Tokyo Subway Ticket, JR Pass는 살 만할까?
도쿄를 처음 여행한다면 먼저 1인당 IC 카드 한 장으로 탈 때마다 결제한다(Welcome Suica는 보증금이 없고 28일간 유효). 하루에 지하철을 4번 이상 타면 2,000엔짜리 Tokyo Subway Ticket 72시간권을 추가하고, 간사이에 가지 않고 도쿄만 여행한다면 JR Pass는 반드시 손해다. TOURIST PASMO, iPhone의 Suica, 도쿄 Metro 하루권의 이용 가능·불가 범위를 결정도로 비교한다. 가격은 2026년 9월 확인.
- 교통
- 예산

가이드도쿄
도쿄 디즈니랜드·디즈니씨 가이드: 티켓 가격, 판타지 스프링스 Fantasy Springs, 디즈니 프리미어 액세스 DPA와 스탠바이 패스 이용법, 첫 방문에는 어느 파크가 좋을까
도쿄 디즈니 하루짜리 패스포트는 변동 가격제로, 2026년 9월에는 평일 대부분이 9,900엔, 주말이 10,900엔이다. 공식 홈페이지에서 매일 14:00에 두 달 뒤 같은 날짜의 티켓을 판매한다. 무료 프라이오리티 패스는 공식 서비스 목록에서 빠져 대기 시간을 줄이는 방법은 유료 디즈니 프리미어 액세스(한 사람당 한 번 1,000~3,500엔)뿐이다. 운영 시간, 25주년 행사, 스탠바이 패스, 엔트리 리퀘스트, 판타지 스프링스 이용법, 첫 방문 때 디즈니랜드와 디즈니씨 중 어디를 고를지도 담았다. 2026년 9월 공식 홈페이지에서 확인했다.
- 추천 일정
- 가족 여행
출처
- Git installation · 확인일:
- Git init · 확인일:
- Git diff · 확인일:
- Git restore · 확인일:
- Git revert · 확인일:
- Codex review workflow · 확인일: