Dev/Git
git reset --hard/--soft <commit>
Itips
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 는 사라진다.
반응형