Blog ブログ

Gitの基礎を学んでみる

こんにちは
プログラマの原です。

突然ですが、バージョン管理はしていますでしょうか?

弊社では、バージョン管理にGitHubを使っております。
私は、入社するまではGitHubを使ったことがなく、そもそもGitHubに使われているGitについて全く知識がありませんでした。
自分の知識を深めるためにGitについて勉強を行い、理解を確実のものにするのと社員の方にアウトプットして共有するために勉強会を開きました。
今回、ブログを書く機会がありましたので、ここでもアウトプットしようと思います。

Gitの概要
Gitは、バージョン管理と呼ばれるファイルの変更履歴を記録できるシステムの一つです。
Gitでは、好きなときにファイルの変更履歴を保存することが出来ます。そのため、一度編集した内容を過去の状態に戻したり、編集箇所の差分を表示するといったことが出来ます。
また、古いファイルを編集して、最新の編集されたファイルに上書きしようとするとサーバにアップロード時に警告を出して、古いファイルで上書きされるのを防ぐ仕組みも持っています。

Gitの特徴としては、分散型とよばれるバージョン管理の仕組みを持っています。
次にその違いを説明をしようと思います。

集中型と分散型の違い
バージョン管理システムには、集中型と分散型の2種類があります。
集中型はソフトウェア一つに対して、一つの共有リポジトリを使います。
ソフトウェア開発者は、一つの共有リポジトリからソースコードを持ってきて編集し、編集が終わったら共有リポジトリに直接反映します。
集中型は、リモートにある共有リポジトリに直接コミット内容を反映するので、ネットワーク上の共有リポジトリに繋がっていないと使えません。

集中型に対して、分散型は複数のリポジトリを持つことができます。
開発者は、ローカルリポジトリを使って作業を行い、ある程度出来上がったらリモートリポジトリに反映するといったことが出来ます。
また、ローカルに変更履歴を保存するので、リモートリポジトリに接続されていなくても変更履歴を保存することが出来るので、ネットワーク環境を意識することなく作業をすることが出来ます。

複数リポジトリを構成出来るので、開発規模や形態に合わせたシステムを柔軟に構成が出来るので、複数人で開発する場合は分散型のバージョン管理システムを使うのが良いと思います。

■Gitの作業の流れ
Gitの機能で重要なのがコミットと呼ばれるファイルの変更履歴を記録する機能です。
以下は、Gitの作業の流れになります。

なお、 GitHubを使う場合は、他の開発者のリポジトリを自分のGitHub上のリポジトリにコピーできる
fork」という機能を使って、相手のリポジトリをコピーしてから作業を開始します。

  1. 共有リポジトリ(自分以外のリモートリポジトリ)から「clone」します。cloneは自分のローカルリポジトリへ共有リポジトリの内容全てをコピーします。
  2. 作業を開始する前にローカルリポジトリを最新の状態にしてから、「pull」コマンドを実行して、最新の変更履歴をダウンロードして、自分のローカルリポジトリに取り込みます。変更履歴を取り込むことをマージとも言います。
  3. cloneした中身のファイルを編集したり、新規ファイルを追加します。
  4. 編集・追加したファイルを「add」コマンドを使って、コミット対象として登録します。
  5. addしたファイルの変更点をローカルリポジトリへ保存するために「commit」という変更点をローカルリポジトリに保存するコマンドを実行する。
  6. commitした変更履歴を共有するためにリモートリポジトリへアップロードします。変更履歴をリモートリポジトリへアップロードするには「push」コマンドを実行します。
  7.  2〜6を繰り返します。
簡単なコミットの流れ

ちなみにGitHubを使っている場合は、Push後に自分の変更履歴を共有リポジトリに反映してもらうために
pull request」という機能を使って変更履歴を受け入れてもらえるか申請します。
承認されれば、共有リポジトリにマージされます。拒否の場合は、closeとなりマージされません。
問題のある変更点を確認して取り込むかどうかを判断出来るので、
共有リポジトリを安定した状態に保つことが出来ます。

まとめ
Gitのコミットの流れをご理解頂けましたでしょうか?

Gitを使うには、「pull→commit→ push」の一連の流れが理解出来れば使うことが出来ます。

Gitは、コマンドを入力して各種操作を行うのですが、コマンドを理解しないといけないので、初心者には少し敷居が高いかもしれません。
コマンドがわからなくても、GUIベースでGitを操作できるSourceTreeというツールがあるので使ってみて下さい。

Gitには他にも機能がありますので、またブログを書く機会があれば紹介しようと思います。

採用情報
クラウドクリエイティブスタジオでは、プログラマを募集しております。
ぜひ、一緒に面白いゲームを作っていきましょう。