KATOエンジニヤリング開発日誌

「アウトプット無きエンジニアにインプットもチャンスも無い」の精神で書いています

「エンジニアのためのGitの教科書」を読んでGitの理解を深める

エンジニアのためのGitの教科書 実践で使える!バージョン管理とチーム開発手法

エンジニアのためのGitの教科書 実践で使える!バージョン管理とチーム開発手法

  • 作者: 株式会社リクルートテクノロジーズ,株式会社リクルートマーケティングパートナーズ,河村聖悟,太田智彬,増田佳太,山田直樹,葛原佑伍,大島雅人,相野谷直樹
  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/01/19
  • メディア: Kindle版
  • この商品を含むブログ (1件) を見る

近年ではGitを扱えることはエンジニアとして必須のスキルとなっています。

commitやpushといった基本的なコマンドはできても、特殊な状況に陥ったときに解決できる人はそう多くないため、Gitの仕組みを知っていることはエンジニアとして一つの武器になると思います。

今回は翔泳社から出版されている「エンジニアのためのGitの教科書」を読んで学んだことをまとめたいと思います。

集中型と分散型バージョン管理システム

ソースコード管理システムにはおおまかに分けて、集中型と分散型に分かれます。

Subversionに代表される集中型のバージョン管理システムは単一のサーバにプロジェクトの情報が保存されます。

そのため、プロジェクトメンバーが何をしているのかがなんとなく分かるメリットがありますが、サーバに障害が発生した場合には作業が停止したり、最悪の場合、過去のバージョン情報が消えてしまうこともあります。

また、テストを充分にしていないソースコードなどはバグを含んでいる可能性があるため、気軽にコミットすることができません。

分散型のソースコード管理システムであるGitは、過去の更新履歴を含めたリポジトリの情報をローカル環境にミラーリングしているため、サーバに障害が起きても全ての情報が消えるというこはありません。

各エンジニアの開発環境にバックアップを取っているイメージになります。

そして、Gitのリモートリポジトリにpushするまではローカルリポジトリで開発できるので、バグを含むソースコードも気軽にコミットできます。

覚えておきたいGitコマンド

git rm [filename]

プロジェクトとして不要なファイルがディレクトリに存在する場合に、Linuxのrmコマンドでファイルを消しますが、Gitで明示的にファイルを削除する場合には、「git rm [filename]」コマンドを使います。

git rm filename

実行後は「git status」コマンドで指定したファイルが削除されたという情報がステージングエリアに追加されているのが確認できます。

また、「–cached」オプションをつけるとワーキングディレクトリ上のファイルはそのままでステージングエリアからファイルを削除することができます。

これはgit addコマンドを取り消す際に使えます。

git checkout – [filename]

git addしていない編集したファイルをHEADの状態に戻すことができます。

私はconfigファイルの内容をテスト時などに変更したものを戻すときによく使います。

git checkout -- filename

所感

200ページ程度の本なので、1~2日程度で読み切れると思います。

いろいろなGitのコマンド例が載っているので参考になりますし、巻末のコマンド早見表とINDEXからGitで実現したいことを逆引きで調べることもできます。

中途半端なGitのリファレンス本を買うよりは役に立つと思います。

また、電子書籍版のみですが、同著の上級編も存在します。

エンジニアのためのGitの教科書[上級編] Git内部の仕組みを理解する

エンジニアのためのGitの教科書[上級編] Git内部の仕組みを理解する

こちらについても読了次第、まとめたいと思います。