ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 특정 파일의 변경 이력 찾기  (0) 2020.02.19
    Git tag  (0) 2020.01.29
    Git 간단한 사용법 - show  (0) 2019.08.05
    Git 간단한 사용법 - log  (0) 2019.07.09
    Git 간단한 사용법 - alias  (0) 2019.07.01
Designed by Tistory.