差分を保存しよう
「Stage」にまとめて、「Commit」する
Diffを変更履歴として保存することをCommit(コミット)といいます。
変更をコミットするまでの手順
Commitするには、まず、「Stage(ステージ)」という入れ物に記録したいDiffをより分けて、一塊にまとめてから、Commitします。
以下のようなイメージです。
VSCode でステージする
では、さっそく、前の章で作ったDiffをステージに移動させてみましょう。
(スクリーンショットでは文言の修正になっていますが、ファイルの作成段階でも手順は同じです。)
変更したファイルの横に出ている「+」ボタンで、ステージできます。
以下がステージ後の画面です。
test.html が、「変更」のグループから、「ステージされている変更」のグループに移動しました。
VSCode でコミットする
コミットには、メッセージ(コメント)を書き込むことが必須になります。
このコミットがどんな作業であるかをメッセージに書き込みましょう。
詳細な説明やメモも残せます。
Shift + Enterで改行を一つ開けて、その下に説明文を書くようにします。1行目はコミットの「タイトル」、下の部分は「説明文」という扱いになります。
最後に、コミットボタンを押して、コミット完了です。
(Enterキーは、コミットのショートカットになっていますので、気をつけて)
最初は「何を書いたら良いんだろう」と戸惑うこともあるかもしれませんが、自分の作業を言語化することは、とても大切です。加えて、第三者に伝わることも大切ですので、困ったときはチームメイトと相談しながら決めるようにしてみてください。
メッセージのコツというか、パターンはプロジェクトによりますが、そんなに多くはありません。慣れてくれば手が止まることはなくなりますョ。ちなみに、技術者の間では英語で書くことがあたりまえのように言われることがありますが、私は推奨しません。無意識に情報量が減ります。慣れた言語で書きましょう。
コミットログを確認しよう
いくつかコミットをしてみて、溜まった変更を専用のビューワーで確認してみましょう。
ソース管理リポジトリの以下のボタンを押して、Git Graph タブを開きます
Git Graph では、コミットは時系列で縦に並び、上のものほど新しいログになっています。
各コミットをクリックすると、変更内容の詳細を辿ることができるようになっています。
「ステージ→変更→変更を破棄」 と、逆行させるには?
下記ボタンを押して、逆行させることができます。
ステージを解除
変更を破棄
うっかり、色んなことをやっちゃった
1つのHTMLファイル上で、「セクション追加するだけのつもりが、気づいたから、ついパンくずも直しちゃった!」
そんなこと、あると思います。
実は、ステージは、コードの行単位でも選り分けることが出来ます。
Diffのタブの中で、該当の部分を範囲選択し、右クリックメニューから「選択した範囲をステージする」で、ステージに送りましょう。
この場合、「変更」と「ステージされている変更」に同じファイルが表示され、Diffが分割されていることを確認できます。
うっかり、コミットを間違えた
ステージでの選り分けが不十分であったり、本来コミットするつもりじゃなかったDiffを混ぜてコミットしてしまったり。
そんなこと、あると思います。
そんなときは、ソース管理の以下のメニューから、コミットを戻すことが出来ます。
その通りです。それは、VSCodeが用意してくれている、自動ステージ機能 によるものです。すべての変更(Diff)を自動的にステージして、コミットまで一気通貫で通してくれます。使ってくれて問題ありません。ただ、ステージの概念は覚えておいてほしいです。
コミットを適切に分割することは、すなわちコミットログがコードのドキュメントになるということです。「この部分は、どうやって追加したんだっけ?」というようなことを、コミットログを追いかけることで、読み解くことができます。
これは、自分での保守はもちろん、新人教育や担当の受け継ぎにも役立ちます。開発初期はやることが多いので、たくさんの変更をドカッとコミットすることは、どうしてもよくありますが、後期には丁寧にコミットを切り分けるよう心がけましょう。
「やり方分かりますか?」→「Gitを見せてもらえれば、大丈夫だと思います」というような会話が現場で成立するのは、とても幸せなことです。
Gitはコミットの単位で時間を遡れます。なので、コミットはそれぞれ単一で不具合を出していない(と思われる)状態で切り分けるのが吉とされています。しかし、それは運用ルールに寄るところがあり、弊社では「努力してね」程度で留めています。カリキュラム後半で言及しますが、動作の保証は「プルリクエスト」の段階ですることを徹底しているためです。「プルリクエスト」は、「個人、一人での開発」では、使う機会があまりありませんので、現段階では、不具合を出していない状態でコミットを、強めに意識するようにしてください。