2014年10月13日月曜日

git reset のオプションについて --soft --hard --mixedの違い

rd : 差分は破棄される(indexとworking treeも戻る)
mixed : add前の状態で保持されている(working treeが保持)
soft : add状態で保持されている(indexも保持)

参考

http://d.hatena.ne.jp/murank/20110327/1301224770


用語の補足

HEAD:コミット状態
index:addした状態
working tree:add前の変更分

[uenoryouichi@ueno-MacBook-Air:git_study](master)$ vi test.php
[uenoryouichi@ueno-MacBook-Air:git_study](master)$ git add test.php
[uenoryouichi@ueno-MacBook-Air:git_study](master)$ vi test.php
[uenoryouichi@ueno-MacBook-Air:git_study](master)$ git status
[uenoryouichi@ueno-MacBook-Air:git_study](master)$ glog
*       Ryoichi Ueno    f410859  (HEAD, master) second                ←HEAD
*       Ryoichi Ueno    70e35e5  initial commit
[uenoryouichi@ueno-MacBook-Air:git_study](master)$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)                                   ←index
 
     modified:   test.php
 
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
     modified:   test.php                                                                    ←working tree



http://d.hatena.ne.jp/murank/20110327/1301224770 より引用


この状態でそれぞれどのような動きになるか試してみましょう
git reset --soft HEAD
git reset --soft HEAD^
git reset HEAD
git reset HEAD^
git reset --hard HEAD
git reset --hard HEAD^

0 件のコメント:

コメントを投稿