안녕하세요,
재재입니다.
github 따라하기 세번째 포스팅입니다.
이번 포스팅을 통해 github 에서 많이 사용하는 명령어 중,
git reset 에 대해 다뤄볼게요.
(1) Unstaged 상태로 돌리기
이번 작업 환경은, 3_reset 폴더입니다.
https://github.com/wowoto9772/github-practice git 을
fork 하신 repo 에서 진행해주시면 됩니다.
3_reset 폴더 내 item-org.txt 파일을 변경해볼게요.
cd 3_reset/
echo "This line may be deleted." >> item-org.txt
파일의 변경사항을 확인 해보겠습니다.
git diff
그리고 그 결과는 다음과 같습니다.
@@ -1,2 +1,3 @@
This is original item.
This item should be preserved.
+This line may be deleted.
unstaged 상태의 item-org.txt 를 staged 상태로 변경하고,
확인해볼게요.
git add item-org.txt
git status
staged 상태의 item-org.txt 를 다시 unstaged 로 변경하고,
확인 해볼게요.
git reset HEAD item-org.txt
git status
이번엔, 파일의 변경점을 완전히 없에볼게요.
git checkout -- item-org.txt
git diff
git checkout — 을 통해,
현재 commit 기준으로 변경점이 있었다면 제거해줍니다.
이때, untracked 파일의 경우는 바뀌지 않습니다.
(2) 가장 최근 커밋 제거하기
이번엔, 같은 경로에 빈 파일을 만들고 커밋을 진행해볼게요.
touch empty.log
git add empty.log
git commit -m "Add empty.log to 3_reset"
현재 커밋 리스트를 확인해보겠습니다.
git log
# quit with q
가장 마지막 커밋인, “Add empty.log …” 를 삭제해볼게요.
git reset --soft HEAD~1
git status
위의 결과로,
empty.log 가 commit 하기 전 상태인 staged 로 변경 된 것을 확인 할 수 있습니다.
이제, empty.log 를 다시 unstaged 및 untracked 상태 로 변경해볼게요.
git reset HEAD empty.log
reset HEAD 를 통해, 현재 commit 기준으로 unstaged 상태로 변경했지만,
현재 git 은 empty.log 에 대해 모르기 때문에 untracked 상태가 되었습니다.
다음단계 포스팅은 아래와 같습니다.
(3) 코드 url
https://github.com/wowoto9772/github-practice/tree/main/3_reset