로컬에서 Git을 사용하다가 실수로 Commit을 할 경우 다시 이전 상태로 원복하고 싶을 때 가장 많이 사용하는 명령를 알아보자.
1) 방금 commit한 내용을 staging area로 돌려 놓고 싶을 경우
- 명령 : git reset --soft HEAD^
- HEAD : 현재 commit의 포인터, ^ : 이전 것, --soft : staging으로 옮기기
$ git reset --soft HEAD^
// commit 했던 LICENSE 파일이 staged area에 존해함
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: LICENSE
#
2) 방금 commit 한 것에 다른 파일로 추가 하여 넣고 싶을 경우 (commit은 증가하지 않음)
- 명령 : git commit --amend -m "add new file"
- --amend : 최근 기존 commit에 추가하기
// 새로운 파일을 만든다
$ touch todo.txt
$ touch add todo.txt
// 기존 commit에 todo.txt 파일 추가하기
$ git commit --amend -m "new thing file"
[master 18b3bb7] new thing file
1 file changed, 3 insertions(+)
create mode 100644 todo.txt
create mode 100644 LICENSE
3) 현재 commit한 것을 없애버리고 싶을 경우 (방금 commit한 내용이 staging 가지 않고 없어진다)
- 명령 : git reset --hard HEAD^
//현재 commit 내역을 본다
$ git log
commit 18b3bb76c5d16c76221d45b1bc61b483001191d4
Author: Yun DoWon <ysyun@yuwin.co.kr>
Date: Sun Jan 13 18:43:03 2013 +0900
new thing file
commit 329db048ff7af2d417588e28da50a6c53fb1bd84
Author: Yun DoWon <ysyun@yuwin.co.kr>
Date: Thu Dec 27 11:07:26 2012 +0900
add content in build.gradle
// 최신 commit 18b3bb76c5d16c76221d45b1bc61b483001191d4 을 삭제했다
$ git reset --hard HEAD^
HEAD is now at 329db04 add content in build.gradle
UserXP@NUKNALEA /d/Git_repositories/pro_git (master)
$ git log
commit 329db048ff7af2d417588e28da50a6c53fb1bd84
Author: Yun DoWon <ysyun@yuwin.co.kr>
Date: Thu Dec 27 11:07:26 2012 +0900
add content in build.gradle
4) 그럼 현재 commit 에서 두단계 이전 commit으로 이동하면서 앞 두단계를 삭제하고 싶다면
- 명령 : git reset --hard HEAD^^
- ^ 이전, ^^ 이전에 이전 (두단계 이전)
'Git, GitHub' 카테고리의 다른 글
[Git] 원같은 파일 수정후 원격 저장소 Push 할 때 Merge Conflict 발생할 경우 해결하기 (0) | 2013.01.13 |
---|---|
[Git] fast-forward merge 를 위한 조건 (0) | 2013.01.13 |
[Git] commit 사용하기 (0) | 2012.11.26 |
[Git] diff 사용하기 (0) | 2012.11.22 |
[Git] Ubuntu 에 설치하기 (0) | 2012.11.14 |