상세 컨텐츠

본문 제목

[Git] 커밋 이동하기, 되돌리기, 삭제

Git

by 혀누쓰0 2023. 4. 13. 01:27

본문

 

 

 

git checkout <커밋 해쉬>

 

git checkout <commit 해쉬명>

 

git checkout <commit 해쉬명>으로 해당 commit으로 이동할 수 있다.

 

commit 해쉬는 git log --oneline으로 확인할 수 있고 git log에서 긴 해쉬코드에서 앞자리 7자리도 가능하다.

 

원래의 브랜치로 돌아가려면 git switch 브랜치명 으로 해도 되지만 가장 최근 브랜치로 이동하고 싶으면

 

"git switch -" 하면 된다.

 

 

 

 

git checkout HEAD~n

 

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>

 

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번째> <파일명>

 

커밋을 이동할 때 사용하는 git restore --source HEAD~<n> <파일명>

 

현재 <파일명>을 HEAD기준으로 n칸만큼 뒤로가는것이다.

 

 

 

 

git restore --staged <파일명>

 

git restore --staged <파일명>

 

git restore --staged <파일명>    스테이징에 올라간 파일을 취소할 때 사용한다.

 

 

 

 

 

 

 

 

 

git reset <commit 해쉬>

 

git reset <커밋 해쉬>
git reset HEAD~<n>

 

 

현재의 변경사항은 냅두고 해당 커밋만 삭제하고 싶을 때 사용한다. 

 

git reset HEAD~<n>으로 HEAD기준으로도 가능하다.

 

 

 

 

 

 

git reset --hard <commit 해쉬>

 

git reset --hard <커밋 해쉬>
git reset --hard HEAD~<n>

 

git reset <커밋 해쉬>랑은 다르게 변경사항을 모두 삭제한다.

 

즉 커밋이랑 변경사항을 모두 다 삭제하고 싶을 때 사용한다.

 

마찬가지로 git reset --hard HEAD~<n>으로도 삭제가 가능하다.

 

 

 

 

 

git revert

 

 

git revert <커밋 해쉬>

 

git reset과 동일하게 commit을 과거로 돌아갈 때 사용한다.

 

하지만 큰 차이가 있다. git reset은 커밋의 기록을 지운다 git reset --hard는 커밋의 기록과 현재 변경사항도 지운다

 

하지만 git revert는 변경사항을 지우지만 커밋의 기록은 냅둔다.

 

혼자서 작업할 때는 git reset이 커밋을 한눈에 보기에 좋고 편하겠지만

 

협엽을 할 때는 git revert만 사용하는것이 좋다고 한다.

 

 

 

 

 

'Git' 카테고리의 다른 글

[Git] git diff, git stash  (0) 2023.03.31
[Git] gitignore, 브랜치 명령어, merge 충돌  (0) 2023.02.23
[Git] 터미널, git 명령어  (0) 2022.08.21

관련글 더보기