67
21

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.

DMM WEBCAMPAdvent Calendar 2021

Day 6

「Gitでやらかした!!」でも、大丈夫です

Last updated at Posted at 2021-12-05

はじめに

みなさん!プログラムファイルの管理はしっかりできていますか?

今回は初心者がついついGitでやらかしがちな3つのケースに焦点を当てて話していきたいと思います。
※ Gitの基本的概念や使い方に関しては別の記事を見てください。

ケース1. 「間違えてaddしてしまった」

本来addする予定のないファイルを間違えて勢いでaddしてしまった!やばい!ってなったことありませんか?
そんな時は、、、

$ git reset ファイル名

上記のコマンドを叩くことでステージングエリアに追加された特定のファイルを取り消すことができます。

また全てのファイルを取り消したい時は、、、

$ git reset

上記のコマンドを叩くことでステージングエリアに追加された全てのファイルを取り消すことができます。

ケース2. 「間違えてcommitしてしまった」

無事addし、commitした直後に実はいらないファイルも混ぜてしまってた!やばい!ってなったことありませんか?
そんな時は、、、

$ git reset --soft HEAD^

上記のコマンドを叩くことで直前のcommitを取り消すことができます。
しかし、この--softってなんじゃって思いませんか?
思った方は勘が鋭いですね!
実は他にも種類があります。
それらについてまとめたものを以下の表で示します。

オプション 意味
--soft commitを取り消した後もインデックスと作業ツリーの状態はそのままである
--mixed(デフォルト) commitを取り消した後作業ツリーの状態はそのままであるが、インデックスの状態は実行前の状態に戻る
--hard commitを取り消した後インデックスと作業ツリーの状態までも実行前の状態に戻る

簡単にいうと
--softは作業ツリーの修正をしたい時
--hardは1つ前のcommitの状態に戻りたい時
に用います。
※ --hardは変更内容が全て無くなるので注意して用いてください。

ケース3. 「間違えてpushしてしまった」

無事add, commitし、勢いよくpushしたが実はブランチを間違えてしまってた、中途半端なcommitだった!やばい!ってなったことありませんか?
そんな時は、、、

$ git reset --hard HEAD^          // 直前のcommitの取り消し
$ git push -f origin ブランチ名    // 強制push

上記のコマンドを叩くことで誰にもバレずにpushを取り消すことができます。
しかし、チーム開発には向いていません。
なぜなら、仮に自分以外のメンバーがローカル環境にローカル環境にpullし別の開発を始めていたら不整合が生じて今後pullができなくなります。

ではどうするか、、、

$ git revert                // 直前のcommitを打ち消すcommit
$ git push origin ブランチ名

上記のコマンドを叩くことで間違えてpushしたcommitを残しつつ、取り消しを意味する新しくcommitを作成しpushを取り消すことができます。

おわりに

add, commit, pushとGitの流れに沿ってやらかしそうなところをピックアップしてみました。
本記事でおっちょこちょいさんを少しでも助けれたらなと思います。
それでは!よいGitライフを〜!

67
21
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
67
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?