基本的な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
には取り消したコミットの履歴も残される。