LabHub
배우기 러닝패스 코스

Git 실전 · 핫픽스가 왔는데 하던 일이 반쯤 열려 있다 · 실습

핫픽스가 왔는데 하던 일이 반쯤 열려 있다

LabHub 에서 이어서 보기

목표

저장소 하나에 작업 디렉터리를 셋까지 붙였다 정리합니다. 끝나면 stash 없이 브랜치를
갈아타는 손이 생기고, 작업 사본이 남긴 관리 파일을 어떻게 치우는지 알게 됩니다.

왜 중요한가

브랜치를 바꾸는 일이 왜 이렇게 번거로운지 생각해 보면, 작업 트리가 하나뿐이기
때문입니다. 저장소는 객체와 브랜치 참조를 들고 있고, 작업 트리는 그중 한 커밋을 펼쳐
놓은 사본입니다. 펼쳐 놓는 자리를 늘릴 수 있다면 갈아타기 자체가 필요 없어집니다.
git worktree 가 정확히 그 일을 합니다. 다만 브랜치 참조는 저장소가 하나로 들고
있어서, 같은 브랜치를 두 자리에서 열려고 하면 git 이 막습니다. 이 제약을 이해하는
것이 이 실습의 절반입니다. 나머지 절반은 정리입니다 — 디렉터리만 지우면 관리 파일이
남고, 그 자리가 prunable 인 채로 계속 목록에 뜹니다.

단계

1. /root/gitx4/repo 에 커밋 3개짜리 저장소를 만들고 release 브랜치를 땁니다.
2. release/root/gitx4/rel 에 작업 사본으로 붙입니다.
3. main/root/gitx4/dup 에 한 번 더 붙여 보고, 거절 메시지를 notes/dup.txt 에 남깁니다.
4. repo 에 저장하지 않은 변경을 남겨 둔 채 /root/gitx4/hothotfix 브랜치를 새로
만들어 붙이고, 거기서 hotfix.txt 를 커밋합니다.
5. git worktree list --porcelainnotes/list.txt 로 남깁니다.
6. /root/gitx4/tmp 를 붙였다가 디렉터리만 rm -rf 하고, prunable 표시와 prune 결과를
notes/prune.txt 에 남깁니다.
7. /root/gitx4/usb 를 붙여 lock 을 걸고, remove 가 거절하는 것을 notes/lock.txt
남긴 뒤 풀어서 지웁니다.
8. notes/report.md 에 worktree · stash · clone 을 언제 쓰는지 정리합니다.

참고

단계 8개

  1. 저장소와 릴리스 브랜치 만들기
  2. 릴리스 브랜치를 두 번째 자리에 붙이기
  3. 같은 브랜치를 두 자리에서 열 수 없는 이유
  4. 저장하지 않은 변경을 그대로 두고 핫픽스
  5. 지금 자리가 몇 개인지 기계가 읽는 형식으로
  6. 디렉터리만 지우면 관리 파일이 남는다
  7. 잠긴 자리는 remove 가 거절한다
  8. 언제 자리를 늘리고 언제 밀어 넣는가