4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

取り消しのGitコマンドの種類を覚えておく

Posted at

基本的なGitコマンドについて復習しています。

復習すると、意外と使っていないコマンドもあったので、このタイミングで改めて覚えておきたいと思います。

addしたファイルを取り消す

$ git add .
aaa.txt
trash.txt
  • 誤ってtrashファイルをaddしてしまった。
  • $ git reset ファイル名addしてしまったファイルを取り消すことができる。
  • ステージングエリアから外れるという言い方もできる。
  • 例】 $ git reset trash.txt (trash.txtはファイル名)

commitを取り消す

ファイル

aaa.txt
trash.txt
$ git add .
$ git commit -m "only aaa.txt"
  • aaa.txtのみをコミットしたいのだが、現状はtrash.txtもコミットされてしまっている状況

そんな時は下記コマンドを打つ。

$ git reset HEAD^
  • これでHEAD(つまり一番直近、先頭のコミット状態)のひとつ前のコミット状況に戻すことができる。
  • これで改めて $ git add aaa.txt(ファイル名)とすれば、trash.txtをコミットせずに済む。
  • ちなみに、2個前に戻したい場合は、HEAD^^とする。

git reset --soft と git reset --hardの違いについて

  • これらはGitのコマンドで、指定したコミットまで履歴を巻き戻すコマンド。
  • --softは、ファイルの変更はそのままに、インデックスHEADだけを指定したコミットまで戻す。
  • 一方、--hardは、ファイルの変更も含めてすべてを指定したコミットの状態まで戻す。
  • (※ $ git reset --soft はローカルのコミットをすべてリセットするので注意!!)
  • (※ $ git reset —-hard はリモートリポジトリを含めてすべてのコミットを取り消してしまうので要注意‼️)

pushの取り消し

もう間違ってgit pushまでしちゃったよ。。。という場合。
自分だけで使ってるブランチなのかみんなで共有しているブランチなのかによって異なるが、、、、

ファイルが2つあるとする。

aaa.txt
trash.txt

それに対して以下を実行したとする。

$ git add .
$ git commit -m "only aaa.txt"
$ git push

ここまでやったところで、、、
pushを取り消したい!と思った場合、、、以下を実行する。

$ git revert コミットID
  • 例】 $ git revert 28daab****6deb37******b3c6ff79f84******みたいなコマンドになる。
  • すると、revertするけどいい?みたいにターミナルで聞かれるので、、、writeの「w」を打つと実行される。
  • これをすると、pushした対象のファイルは取消される。
  • さらにコミットは取り消すひとつ前のコミットに戻る。
  • (※ひとつ前のコミットでそのファイル2個を作っていない状態だった場合は、ファイルは削除されるので注意)
  • $ git logには取り消したコミットの履歴も残される。
4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?