gitってスクールじゃ習わなくね?
独学、もしくはプログラミングスクールを卒業して、晴れてエンジニアになった人が一番最初に業務で悩まされるのがgitではないかと思う今日この頃。
その壁を少しでも低くしようと思い、今日は新人エンジニアの方々向けにgitについて解説しようと思います。
gitとは?
gitって何となく分かるけど実際何なの?って思われた方。
ズバリgitとはバージョン管理システムの事です!
…バージョン管理システムがよく分かんねえよって感じですよね。すみません(笑)
「バージョン管理」とは、開発の中で更新されていくソースコードやファイルの変更を記録することです。
つまりそのサポートしてくれるソフトウェアがバージョン管理システム、いわゆる「git」という事です。
バージョン管理システムには、集中管理型(SVN や、CVS)、分散型(Mercurial 、 Bazzar)など色々あるんですが、ここでは割愛させていただきます。ちなみにgitは分散型です。
なぜバージョン管理システムを使う必要があるのか
上記でバージョン管理システムがどういったものか説明しましたが、なぜ使う事が推奨されているのでしょうか。
まずバージョン管理システムができる事の一例を見てみましょう。
変更履歴の記録
変更の取り消し、復元
変更理由、その担当者の履歴
バージョン管理システムを使用せずに開発を進めてしまうと、他の作業者が編集した内容に気づかずにソースコードを上書きしてしまったり、時には不要なコードと認識し、削除してしまい、結果としてエラーや先祖返りが多発してしまうことになります。
しかし、上記の3つが可能になった場合はどうでしょう?
変更履歴を辿ることで、変更理由が確認できますし、さらにその担当者も確認できるので、不用意にコードを削除してしまうことも無くなるでしょう。それによりエラーや先祖返りの発生率を下げることに繋がってきます。
便利ですね。
もっと砕いて要約すると、
過去の変更・状態の履歴を辿れる。
いつ、誰が変更したか一目で分かる。
統合を楽にできる。
3に関しては、後ほど説明します。
gitの使い方
gitがどういったものか分かったから使えるようになるわけではないですよね。
どうやって使うのか簡単に解説します。
まずはダウンロード
まずはダウンロードしましょう!Macだと基本的にgitは標準装備なのでダウンロードする必要はありません。Windowsの方は以下からダウンロードしましょう。
ダウンロードが完了すると、Windowsだとgit bashのアイコンが出てきますので、それを開くとターミナルが開かれます。Macの場合は「ターミナル」がそれと同等のものになります。
そこで以下のコマンドを入力し、
git --version
以下のようにバージョンが表示されていれば、これで準備は完了です。
git version 2.32.0 (Apple Git-132)
現場によって「git hub」を使用していたり、「git lab」や「backlog git」を使用していたり様々ですが、準備に関しては全部同じです。
gitの仕組み
gitを使えるようになっても仕組みを理解していないとなかなか手を出すのに躊躇いますよね。とりあえず以下の3つを理解しましょう。
リポジトリ
リポジトリとは、ファイルやディレクトリの状態を記録する場所です。保存された状態は、内容の変更履歴として格納されています。変更履歴を管理したいディレクトリをリポジトリの管理下に置くことで、そのディレクトリ内のファイルやディレクトリの変更履歴を記録することができます。
コミット
コミットとは、ディレクトリの追加・変更を、リポジトリに記録する操作の事です。
コミットを実行するためには、作業ディレクトリ内の変更をステージングエリアに追加する必要があります。(コマンド:git add .)
コミットの実行時には、コミットメッセージの入力を求められます。コミットメッセージは必須となっているため、空のままで実行するとコミットが失敗します。(コマンド:git commit –m “fix: 変更した内容”)
コミットは、右の図のように時系列順につながった状態でリポジトリに格納されています。このコミットを最新の物から辿ることで、過去の変更履歴やその内容を知ることができるようになります。
リモートとローカルの違い
Gitには以下の2つのリポジトリが存在します。
リモートリポジトリ・・・・専用のサーバに配置して複数人で共有するためのリポジトリです。
ローカルリポジトリ・・・・ユーザ一人ひとりが利用するために、自分の手元のマシン上に配置するリポジトリです。
リポジトリをリモートとローカルの2種類に分けることで、普段の作業はローカルリポジトリを使って全て手元のマシン上で行うことができます。
自分のローカルリポジトリで作業した内容を公開したい時は、リモートリポジトリにアップロード(git push)して公開します。また、リモートリポジトリを通してほかの人の作業内容を取得することもできます。
ブランチとは
ブランチとは、履歴の流れを分岐して記録していくためのものです。分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができます。
また、分岐したブランチは他のブランチと合流(マージ)することで、一つのブランチにまとめ直すことが出来ます。
下の図はブランチを使った並行作業のイメージです。
チームのメンバーは、他のメンバーの作業の影響を受けないように、メインのブランチから自分の作業専用のブランチを作成します。 そして作業の終わったメンバーは、メインのブランチに自分のブランチの変更を取り込んでいきます。このようにすることで、他のメンバーの作業による影響を受けることなく、自分の作業に取り込むことができます。また、作業単位で履歴を残すことで、問題が発生した場合に原因となる変更箇所の調査や対策を行うことが容易になります。
コマンド
実際に業務でよく使うコマンドも以下に載せておきます。
git version (gitのバージョンを出力する)
git clone リポジトリのURL(対象リポジトリのデフォルトブランチをクローンする)
git branch(ローカルブランチの一覧を出力する)
git branch –D ブランチ名(対象ブランチを強制削除する)
git checkout ブランチ名(対象ブランチに切り替える)
git checkout –b 新しいブランチ名(ブランチを新規作成し、切り替える)
git add .(変更があったファイルをコミットの対象に追加する)
git push origin ブランチ名(対象リモートブランチにpushする)
git pull origin ブランチ名(対象リモートブランチの内容をローカルブランチにpullする)
git status(変更したファイルの一覧を出力する)
最後に
いかがでしょう、ちょっと一気に詰め込みすぎましたかね。
これからgitを触る人は上記を覚えておくと開発の際に少し楽になるかと思います。
大変ですけど頑張りましょう!
この記事が気に入ったらサポートをしてみませんか?