git checkout <commit 해쉬명>
git checkout <commit 해쉬명>으로 해당 commit으로 이동할 수 있다.
commit 해쉬는 git log --oneline으로 확인할 수 있고 git log에서 긴 해쉬코드에서 앞자리 7자리도 가능하다.
원래의 브랜치로 돌아가려면 git switch 브랜치명 으로 해도 되지만 가장 최근 브랜치로 이동하고 싶으면
"git switch -" 하면 된다.
git checkout HEAD~n // n은 인덱스가 아님
git checkout HEAD~n으로도 해당 commit으로 이동할 수 있다.
현재 HEAD 기준으로 이동하며 n은 인덱스 번호가 아니다
ex) git checkout HEAD~2 는 HEAD기준으로 2번째 뒤에 있는 commit이다.
git checkout HEAD <file>
git checkout -- <file>
git restore <file>
checkout이 동작하는 명령어가 너무 많아서 나눴다고 한다. ex) git switch, git resotre
파일의 변경사항을 취소할 때 사용한다 git checkout HEAD <파일명>
git checkout -- <파일명>, git restore 동일하게 작동한다.
최근 커밋으로부터 스테이징에는 올리지않고 파일을 저장만 했다고 가정했을 때 최근 커밋의 파일로 돌아갈 수 있다.
git restore --source HEAD~<n번째> <파일명>
커밋을 이동할 때 사용하는 git restore --source HEAD~<n> <파일명>
현재 <파일명>을 HEAD기준으로 n칸만큼 뒤로가는것이다.
git restore --staged <파일명>
git restore --staged <파일명> 스테이징에 올라간 파일을 취소할 때 사용한다.
git reset <커밋 해쉬>
git reset HEAD~<n>
현재의 변경사항은 냅두고 해당 커밋만 삭제하고 싶을 때 사용한다.
git reset HEAD~<n>으로 HEAD기준으로도 가능하다.
git reset --hard <커밋 해쉬>
git reset --hard HEAD~<n>
git reset <커밋 해쉬>랑은 다르게 변경사항을 모두 삭제한다.
즉 커밋이랑 변경사항을 모두 다 삭제하고 싶을 때 사용한다.
마찬가지로 git reset --hard HEAD~<n>으로도 삭제가 가능하다.
git revert <커밋 해쉬>
git reset과 동일하게 commit을 과거로 돌아갈 때 사용한다.
하지만 큰 차이가 있다. git reset은 커밋의 기록을 지운다 git reset --hard는 커밋의 기록과 현재 변경사항도 지운다
하지만 git revert는 변경사항을 지우지만 커밋의 기록은 냅둔다.
혼자서 작업할 때는 git reset이 커밋을 한눈에 보기에 좋고 편하겠지만
협엽을 할 때는 git revert만 사용하는것이 좋다고 한다.
[Git] git diff, git stash (0) | 2023.03.31 |
---|---|
[Git] gitignore, 브랜치 명령어, merge 충돌 (0) | 2023.02.23 |
[Git] 터미널, git 명령어 (0) | 2022.08.21 |