はじめに
皆さんが普段から使っているリポジトリ管理ツールのgit。
とても便利なツールですが、実は超危険なコマンドがあるそうです。
そこで今回は、gitの危険な操作について徹底調査しました!

危険な操作① push
みなさんが絶対に使っているgit pushですが、使い方を誤るととても危険です!
pushはローカルの内容をリモートに反映させるコマンドです。
ローカルで誤った内容をコミットしたままpushしてしまうと、リモートへ間違った内容を反映されてしまうこととなり取り返しがつかなくなります。。。
ローカルとリモートの関係について詳しくはこちらの記事を見てください!
Push自体は気軽に行うことが多いと思いますが、Pushしてリモートに一度反映させた内容は基本的に取り消すことができなくなります。
そのため、Pushするときはローカルから反映させる内容に誤りがないかを十分に確認して慎重に行う必要があります。
危険な操作② reset
git resetは指定したコミットハッシュまで変更差分を戻してしまいます。
--hardオプションをつけるとやっていた作業が全部消えてしまうことも・・・
うっかり実行して作業が全部消えてしまったら怖いですよね・・・
デフォルトオプションでは--mixedが選択されているのでgit resetをオプションなしで実行しても勝手に消えたりはしないです。
ただ、理解して実行しないと自分の修正差分が消える可能性は普通にあるので、gitの操作中にresetするときは十分に注意する必要があります。
(コミットの戻し方みたいな記事で気軽にreset --hardしてることが多いので危険だなと思っています。)
危険な操作③ rebase
一番危険な操作です!
「間違ってコミットしちゃったやつを消したい!」「マージしたらぐちゃぐちゃでよくわかんないから奇麗にしたい」そんな要望をかなえてくれるのがrebaseという素敵なコマンドです。
でもちょっと待って!rebaseはブランチ同士を無理やりくっつける歴史改変のコマンドだったのです!
歴史改変をして無理やり今がきれいに見えるようにしているので過去の修正がごっそり全部なくなったり修正したはずのコードが元に戻ったりと、正しく行えないと先祖がえりを起こしやすいとても危険なコマンドみたいです!
gitの基本概念として、作業した記録は残していくことが基本となっています。
間違ったコミットなどはrebaseで隠そうとせず間違ったことも記録したほうがいいと私は考えています。revertなどでコミットの打消しなども用意されているのでgitとしても隠すことは是としていないと思っています。
先祖返りの原因No1はよくわからずにrebaseしたブランチをpushしていることだと思っているのでrebaseは完全に理解するまで使わないことを強く推奨します。
危険な操作④ rm
git rmを使用するとリポジトリ内のファイルを削除してしまう可能性があります!
消したファイルは元に戻らないので慎重に捜査をしないと取り返しのつかないことに((+_+))
bashコマンドのrmと同じ感じなので使うときは普通に気を付けて削除する。
危険な操作⑤ stash
stashは変更差分をコミットせずに保存できる便利なコマンドです!
差分を取っておくだけだから危険度がなさそうに見えますが、大きな危険が潜んでいます・・・
stashはあくまで一時保存なのでgitが差分を保持している保証がないのです!
stashしすぎると自分がどの差分をstashしたかわからなくなったり間違った内容を適用してしまったりとstashを多用するリスクがたくさんあります。
rebaseのところでも説明しましたが、gitは変更差分を記録していくことが前提になっているので面倒くさがらずにcommitしていく癖をつけるといいですね!
便利なコマンドなので私も良く使っていますが、gitは基本commitして記録していくものなのでstashの多用は危険です。
stashは修正内容を一時保存するものなので、意図しない修正を取り込むこととなったりstashしておいたものがどれかわからなくなったりすることがあるので適度に使うのがおすすめです。
stashはパスワードなどのコミットしたくない情報を一時保存したりする用途で私はよく使っています。
おわりに
いかがでしたか?
gitの危険な操作について、詳しくご紹介できたのではないでしょうか?
便利なgitにも危険が潜んでいて、注意して使わなければいけないのでしょう。
gitの危険についてははっきりとした情報はありませんが、今後も危険なコマンドが出てくるかもしれませんね。
この記事が参考になったよ~面白かったよ~って思った方はチャンネル登録と高評価をお願いします!