-
git reset --hard/--soft <commit>Dev/Git 2020. 2. 19. 14:27반응형
$ git log --oneline dddddddd 18 hours ago itips commit 3 cccccccc 21 hours ago itips commit 2 bbbbbbbb 21 hours ago itips commit 1 aaaaaaaa 24 hours ago itips Merge branch 'master'
위와 같이 커밋들이 쌓여 있다고 가정하자.
작업중 커밋 dddddddd 를 날려버리고 커밋 cccccccc 로 돌아가고자 한다면 아래와 같이 cccccccc 를 타겟으로 잡고 hard reset 을 하면 된다.
$ git reset --hard cccccc cccccccc 21 hours ago itips commit 2 bbbbbbbb 21 hours ago itips commit 1 aaaaaaaa 24 hours ago itips Merge branch 'master'
단 dddddddd 안에 작업했던 모든 작업들은 사라진다. 따라서 이때는 'git checkout -b cccccccc' 와 같이 타겟 커밋으로 신규 브렌치를 만들어서 작업하는 것이 안전하다.
만약 dddddddd 커밋을 위로 물려서 cccccccc 커밋이 최근 커밋이 되고 dddddddd 에 작업했던 내역은 그대로 살려두고 싶다면 아래와 같이 soft reset 을 사용한다.
$ git reset --soft cccccccc On branch devel Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: file_1.txt new file: file_2.txt
위와 같이 현재 cccccccc 커밋위에서 작업했던 파일을 'git add .' 을 사용해서 stage 로 올려놓은 상태로 되돌려주며 커밋 dddddddd 는 사라진다.
반응형'Dev > Git' 카테고리의 다른 글
Git 간단한 사용법 - checkout (0) 2024.09.10 git 특정 파일의 변경 이력 찾기 (0) 2020.02.19 Git tag (0) 2020.01.29 Git 간단한 사용법 - show (0) 2019.08.05 Git 간단한 사용법 - log (0) 2019.07.09