본문 바로가기

IT

Git - detached head 실습

728x90
git init

# C0
echo "안녕" >> 1.txt
git add .;git commit -m "작업0"
git log --all --graph --decorate --oneline

# C1
echo "하세요." >> 1.txt
git add .;git commit -m "작업1"
git log --all --graph --decorate --oneline

# C2
echo "반가워요!" >> 1.txt
git add .;git commit -m "작업2"
git log --all --graph --decorate --oneline

# 최신커밋에서 뭔가를 하려다가, git add 하기 전에, 잠시 과거로 돌아감
echo "♥♥" >> 1.txt
git checkout C1 # 실패, 기존 작업을 저장하지 않았음

git checkout -f . # 마지막 커밋 이후로 작업한 내용중에서, git add 되지 않은 것들을 취소

git checkout C1 # 성공

# 과거에서 작업
echo "ㅋㅋ" >> 1.txt

# 현재로 돌아옴
git checkout master # 실패, 작업한게 있기 때문에
git checkout -f . # 작업한 것을 제거
git checkout master # 성공

git checkout -f : 마지막 커밋 이후 작업 내용 취소

과거로 돌아갈 일은 거의 없다. 궁금하면 github에서 커밋내용(과거), 로그를 확인할 수 있고 그 당시 코드를 받을 수 있다.

하지만 공부할 때 같은 경우 자료를 git으로 관리하고 제공한다면 git checkout -f . 로 초기화하고 (시간 여행 준비) git checkout <시간여행할 커밋>으로 돌아가서 작업을 진행하면 손쉽게 실습환경을 구축하고 활용할 수 있을 것 같다.

 

'IT' 카테고리의 다른 글

git reset과 amend 실습  (0) 2022.09.13
Git cherry-pick 실습  (0) 2022.09.13
Git rebase 실습  (0) 2022.09.13
Git merge 실습  (0) 2022.09.13
스프링 IoC 컨테이너 (Inversion Of Control)  (0) 2022.09.05