Git

【Git】git addコマンドを取り消す方法

本記事ではgit addコマンドを取り消すことができる、git resetコマンドについて解説しています。

先輩くん
先輩くん
本記事ではGitを使用します。
Gitのインストールをしていない人はこちらの記事を参考にしてください!

Gitの学習におすすめ参考書
改訂2版 わかばちゃんと学ぶ Git使い方入門

本書情報
著者湊川 あい
発売日2021/6/12
ページ数280ページ
Kindle版
レビュー
(Amazon)
(84件)
先輩くん
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

ステージした変更を取り消す

git addコマンドで、誤ってステージするつもりのないファイルやディレクトリをアップしてしまった場合に、git resetコマンドを使うことでステージした変更を取り消すことができます。

git resetコマンドは、ステージされた変更を取り消すだけなのでワークツリー(自分のローカル環境)に影響を与えることはありません。

後輩ちゃん
後輩ちゃん
Gitはどのようにしてステージされた変更を取り消しているんですか?
先輩くん
先輩くん
リポジトリから最新のコミット情報を取得し、ステージの内容を上書きしているよ!

ステージしたファイルを取り消す

ステージしたファイルを取り消すには、HEADの後に「ファイル名」を指定します。
git reset HEAD filename

ステージしたディレクトリを取り消す

ステージしたディレクトリを取り消すには、HEADの後に「ディレクトリ名」を指定します。
git reset HEAD directoryname

ステージした全てを取り消す

ステージした全てを取り消すには、HEAD「.」を指定します。
git reset HEAD .

【実践】ステージされた変更を取り消す流れ

それでは実際にステージされた変更を取り消す流れを紹介します。
※変更を取り消すファイル(test.txt)がリポジトリにアップされていることを前提として解説していきます。

まず始めに対象となるtest.txtをステージさせるため、ファイルに変更(テキストの追加や削除)をします。
次に、git statusコマンドで現在の状況を確認します。
git status

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   test.txt

no changes added to commit (use "git add" and/or "git commit -a")
「Changes not staged for commit:」とは、ステージされていないファイルがあるということを意味しています。
ステージすることができるファイルに「test.txt」が表示されているのが確認できます。
git addコマンドでステージにファイルを追加します。
git add test.txt
再度、git statusコマンドで現在の状況を確認してみましょう。
git status

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   test.txt

「Changes to be committed:」とは、ステージに追加されているファイルがまだコミットされていないことを意味しています。
コミットしていないファイルに「test.txt」が表示されているのが確認できます。

ステージにファイルを追加するところまで出来たので、本題のステージされたファイルの変更を取り消しましょう。
git reset HEAD test.txt

Unstaged changes after reset:
M	test.txt
再度、git statusコマンドで現在の状況を確認してみると、先程まではステージされていたファイルが取り消されていることが確認できます。
git status

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   test.txt

no changes added to commit (use "git add" and/or "git commit -a")

ステージさせることができるファイルとしてまだ認識がされているため、変更自体が不要の理由であれば「git checkout — test.txt」コマンドを実行して、ファイルの変更を取り消してワークツリーをクリーンな状態にしましょう。

以上が、ステージした変更を取り消す一連の流れになります。

参考記事

Git公式ドキュメント

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村