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