スニペットを登録してGitでのミスを防いだ話

今回のブログ担当は石川です。6月といえば雨という印象ですが、今年の松江は雨が降らない日が続いています。

さて、業務でのソースコードのバージョン管理にGitを使っています。 その中で、何度かこんなコミットをしました。

「不要なファイルを間違えてpushしてしまったので消します...」といった内容です。

gitでファイルをcommitをする前の段階でしっかりチェックしていれば防げる話なのですが、それでも時々見落としがありました。 幸い動作確認のために追加していたファイルなど、あまり問題にならないレベルのものしか「間違えてpushしました...」となることはなかったのですが、この調子だったらその内何かやらかしてもおかしくないと危機感を覚えていました。

1度目にミスをしてから、次に同じミスをしないためのルールを決めました。

ファイルをaddする際は git add -u で変更があった部分のみをaddし、ファイル追加したいときは単体でファイルを指定して git add sample.txt とする

ですがそれでもついつい-uをつけ忘れて、そのままgit statusで確認した際も見逃してしまい、pushしてしまうことがありました。

いくらルールを作ってもそれを守らない(守れない)と意味がないですね。

そのルールを確実に守るためにはどうしたら良いか考えて、 スニペット を活用することにしました。

スニペット機能

元から利用していたMacのランチャーアプリ「Alfred3」がスニペット機能を持っていたので、 Alfredにgit addというキーワードでgit add -uという内容を引き出せるようにセットしました。

スニペット機能とは、あらかじめ登録しておいたテキストを必要なときに呼び出して素早く入力できる機能です。

そして、Auto-Expansionという機能を使うように設定しました。

これは、登録しておいた短いキーワードだけ入力すれば自動的にスニペット全体が展開される機能です。要はgit addと入力したら自動でスニペットが展開される(つまりgit add -u)に変換されるという機能です。ターミナルをはじめ、テキスト入力エリアであればどこでも使えます。

そうすることで、いつも通りgit addと入力すると-uのオプションも自動でつくので、忘れることはなくなりました。 新しいファイルを追加したい場合は、意識的に-uを消して使います。

実際何が変わったのかというと、入力する文字数が3文字(スペースとハイフンとu)減っただけなのですが、それだけでも考えることなく「不要なファイルを間違えてpushしてしまったので消します...」とならないためのルールを守ることができるようになりました。

余談

gitはコマンドもいろいろな種類があり、オプションをつけると随分と長文になってしまったりします。私の記憶力では覚えることができません。 そういったコマンドを省略できるようにgit自体にもエイリアスを設定できるようになっています。

例えば、git status --short --branchというコマンドをよく使うときは、git stと入力するだけでgit status --short --branchを入力した時と同じ結果を得る...と設定しておくことができます。

私は、これで楽ができる!と思いワクワクしながらいくつかのコマンドのエイリアスを設定しました。

↓ しかし

結局、数回程度しか使いませんでした。 その理由は、純粋に私の記憶力が悪かったからです。 入力文字数は多くても、何も考えずにいる方が「楽」に思えたのです。(もちろん、速度のことを考えれば覚えてしまった方が良いのはわかりきっているのですが。)

結局、ここでやりたかったことも今はスニペット機能で補っています。

ファーエンドテクノロジーからのお知らせ(2025/01/15更新)
「しまね移住の先輩セミナー ~未経験からはじめるIT移住~」に弊社社員の呂 勝男が登壇
「しまね移住の先輩セミナー ~未経験からはじめるIT移住~」に、ファーエンドテクノロジー社員の呂勝男が登壇いたします。
オープンソースカンファレンス2025 Osakaに弊社代表の前田が登壇(ブース出展あり)
2025年1月25日に開催されるオープンソースカンファレンス2025 Osakaで、弊社代表の前田によるセミナー発表とブース出展を行います。
プロジェクト管理ツール「RedMica」バージョン 3.1.0をリリース Redmine互換のオープンソースソフトウェア
ファーエンドテクノロジー株式会社は、2024年11月19日(日本時間)、Redmine互換のプロジェクト管理ソフトウェア「RedMica 3.1.0」をリリースしました。
プロジェクト管理ツールRedmineのクラウドサービス「My Redmine」の海外向けサービス「My Redmine Global Edition」の提供を開始
「My Redmine」の海外向けサービスとして、新たに「My Redmine Global Edition」の提供を開始しました。
Redmineの最新情報をメールでお知らせする「Redmine News」配信中
新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け