Gitを始めよう!(入門)
5min
変更を破棄する(git checkout, git reset)

変更を破棄する

Gitには、変更を柔軟に扱えるようにステージングエリアという概念があります。変更の破棄を行う際には、自分が行なった変更が今どんな状態か(add前、add後&commit前、commit後)を意識する必要があります。
Dummy

git checkout(add前の変更を破棄する)

git checkoutはチーム開発をしていく上で、ブランチを扱い始めると登場頻度が高くなります。
準備中
もちろん、個人開発用途でGitを使用している場合にもブランチを分けるのはおすすめです。
git checkout はブランチの切り替えに使用しますが、下記のように「今いるブランチに切り替える」というようにすると変更を破棄することができます。
# 適当なファイルを編集する git status On branch master Your branch is up-to-date with 'origin/master'. 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: kbde no changes added to commit (use "git add" and/or "git commit -a") # 「現在の〜」は、Gitに限らずピリオドを使うことが多い git checkout . On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working tree clean
なぜgit checkout . でadd前の変更を破棄できるかは、
理論的には少し難しいから、基礎編や発展編で扱うよ!
Octocat

git reset(add後〜commit前の変更を破棄する)

「git checkout .」と比べると、resetの使用頻度は減ります。なぜなら、通常、addする時に変更を確認するからです。
git add -p
addした後に変更を破棄するには git reset を使用します。
# 適当なファイルを編集する git add -A git status On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: hoge git reset HEAD hoge Unstaged changes after reset: M hoge git status On branch master Your branch is up-to-date with 'origin/master'. 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: hoge no changes added to commit (use "git add" and/or "git commit -a")
ここからさらに git checkout . をすれば完全に変更がなかったことになります。

commit後の変更を破棄したい

commit後の変更の破棄は少し難しいため、基礎編で扱います。
準備中
入門編はこれで終わりだよ!
基礎編ではチーム開発を行うためにマストなスキルを説明するよ!
Octocat