RSS

================================================================================

Before Today

================================================================================

If I was crying
In the van, with my friend
It was for freedom
From myself and from the land

================================================================================

06/05/2010 23:15:08

Git | git reset

HEAD^ は「HEAD というコミットオブジェクトの1つ前のコミットオブジェクト」を意味する記法。

git reset HEAD^

$ git st                                                                                                                 (git)-[master][~/Sites/lang/git/gitusers]
# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#       new file:   style.css
#
# Changed but not updated:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#       modified:   index.html
$ git ci -a -m 'ほげ' # 間違えて index.html も含めてコミットしたので取り消したい。                                                                                                   (git)-[master][~/Sites/lang/git/gitusers]
[master d9ea24c] ほげ
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 style.css
$ git reset HEAD\^                                                                                                       (git)-[master][~/Sites/lang/git/gitusers]
Unstaged changes after reset:
M       index.html
$ git st                                                                                                                 (git)-[master][~/Sites/lang/git/gitusers]
# On branch master
# Changed but not updated:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#       modified:   index.html
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#       style.css
no changes added to commit (use "git add" and/or "git commit -a")

git reset HEAD^ は、ワークツリーのファイルは変化しない。HEAD^ が記録している状態から作業を始めるように戻す。間違って作ったコミットは捨てられ、次のコミットは HEAD^ であったコミットの子供として作られるようになる。

git reset —hard HEAD^

$ git ci -a -m 'ほげ';                                                                                                   (git)-[master][~/Sites/lang/git/gitusers]
[master b9381d5] ほげ
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 style.css # ↑と同じ状態。間違えて index.html もコミットしてしまった。
$ git reset --hard HEAD\^                                                                                                (git)-[master][~/Sites/lang/git/gitusers]
HEAD is now at b315e80 追加
$ git st                                                                                                                 (git)-[master][~/Sites/lang/git/gitusers]
# On branch master
nothing to commit (working directory clean)
$ ls                                                                                                                     (git)-[master][~/Sites/lang/git/gitusers]
index.html

git reset —hard HEAD^ はコミットしたくない変更までコミットしただけでなく、ワークツリーにした変更もすべて捨てたい場合に使う。

git reset —hard HEAD


git reset —hard HEAD は最新のコミット以来、ワークツリー中にしてきたすべての変更を取り消すことができる。

--------------------------------------------------------------------------------

 

================================================================================

Designed: Robert Boylan
Powered: Tumblr