誤って、Gitにファイルを追加するコマンドを使ってしまいました。
git add myfile.txt
まだgit commit
を実行していません。これを元に戻して、これらのファイルがコミットに含まれないようにする方法はありますか?
コミット前に git add
を取り消すには、次のようにします。
git reset <file>
とすると、他には何も変更せずに、現在のインデックス(「これからコミットされる」リスト)から削除されます。
その際には
git reset
をファイル名なしで使用すると、すべての変更を解除することができます。これは、ファイル数が多すぎて1つずつリストアップしていたら時間が足りなくなったときに便利です。
古いバージョンのGitでは、上記のコマンドはそれぞれ git reset HEAD <file>
と git reset HEAD
に相当し、HEAD
が未定義 (まだリポジトリに何もコミットしていないため) または曖昧 (HEAD
というブランチを作成したため。これはバカげていてやってはいけないことです) な場合は失敗します。しかし、これはGit 1.8.2で変更されたので、最近のバージョンのGitでは最初のコミットを行う前でも上のコマンドを使うことができます。
git reset" (オプションやパラメータなし) は、以下のようなときにエラーになります。 これまでは、履歴に何もコミットしていないときにエラーになっていました。 空のインデックス (あなたが参加していない、存在しないコミットに対応するもの) が表示されます。
と入力すると
git status
Git は、ステージングされたものなどを、ステージングを解除する方法も含めて教えてくれます。
use "git reset HEAD <file>..." to unstage
このような状況では、Git は正しいことをするようにうまく誘導してくれます。
注:最近のGitバージョン(1.8.4.x)では、このメッセージが変更されています:。
(use "git rm --cached <file>..." to unstage)