• web制作
  • Git

Gitについて、前回記事の補足

熊谷
このエントリーをはてなブックマークに追加

どうも熊谷です [▓▓]=͟͟͞͞=͟͟͞͞ εː)

ご覧の皆さんは何かゲームをされていますか?
僕はもうすぐローンチから1年が経とうとしているFinal Fantasy XIV 新生エオルゼアをひたすら続けています。MMORPGは本当に中毒性高い…。

元々自分はRagnarokOnlineからMMOに手を出し、リネージュ2、パンヤ、マビノギ等々…ある程度はプレイしてきましたが、Ragnarok以上にゲームやらないだろうなと思っていた物の、FFでどっぷりと浸かってしまいましたw

どっかの方の名言で「FFは遊びじゃねーんだよ」ってありますが、正にソレですね。。
現在はバハムート侵攻編3層で大縄飛びしている所ですが、早く4層まで踏破したいと思っています。

さて本編です。
今回は前回記事で書いた「Dropboxを使ってGit環境を整えるススメ」の続きとなっておりますので、実はまだよく分からない方やこれから実践してみたい方に、まずはGitを使う上での仕組みを簡単に理解していただければと思っています。

前回の記事はコチラ→ Dropboxを使ってGit環境を整えるススメ

リポジトリとは

前回は実践から始めてしまいましたので、掘り下げて行こうと思います。

まずリポジトリとは、ファイルやディレクトリの状態を記録する場所の事です。
登録する度に作業内容のファイルやディレクトリなどの変更履歴が格納されていきます。

リモートリポジトリとローカルリポジトリについて

リモートリポジトリとは

ローカルリポジトリ以外のネットワーク上やファイル上に存在する複数の利用者で共有するリポジトリの事で、ローカルリポジトリの変更をリモートリポジトリへ反映して共有管理することができます。
また、リモートとありますが必ずしもネットワーク上になければいけないという訳ではありません。

ローカルリポジトリ

ユーザーがローカルマシン上で作業するために利用するリポジトリです。
基本的にそのユーザーはこの領域にて変更履歴を管理しつつ、作業を行います。

2つのリポジトリを使い分けよう

普段の作業はローカルリポジトリを使って全て手元のマシン上で制作管理を行い、本番化やバグフィックスされたデータをリモートリポジトリにコミットを行うと良いでしょう。
また、リモートリポジトリをプル・フェッチ・クローン(後述します。)することで作業内容を取得することも可能です。

コミットとは

ファイルやディレクトリの追加変更をリポジトリに記録する操作の事、実行することでリポジトリ内に現在・過去までのコミットグラフが作成されます。

コミットは時系列順に繋がった状態でリポジトリに格納されるので、変更を辿ることで過去の変更履歴やその内容を知ることが出来ます。
また、コミット実行の際にはメッセージが必須になりますので、自分はもちろん、他の作業者に変更内容が分かりやすく伝わるようにメッセージを書くと良いです。

人によってはコミットメッセージは英語で書いたり、1行目がコミットのタイトルで、空白行あけて3行目から説明を書くようになどあると思いますが決まりはないですので、まずは好きにやってみましょう。

ワークツリーとインデックスについて

ワークツリーとは(作業ツリーとも)

実際に作業しているディレクトリの事を指します。
他のブランチに切り替えたり、特定のコミットの状態にすることができます。

インデックスとは

ステージングエリアとも呼ばれる事もあり、リポジトリにコミットする準備をするための領域です。
リポジトリとワークツリー間のやりとりにはインデックス領域を経由されます。

ワークツリーとインデックス

ワークツリーでの追加変更点をインデックスに登録することで、リポジトリにコミットすることが可能となります。

リポジトリの共有

これまでの事を踏まえ、ローカルリポジトリとリモートリポジトリの変更履歴のやりとりについて紹介します。

リモートリポジトリにプッシュ

ローカルリポジトリの変更履歴をアップロードするには、Gitのプッシュ(Push)と呼ばれる操作を行います。
実行されると、ローカルリポジトリの内容がリモートリポジトリと同期されます。

リモートリポジトリのクローン

リモートリポジトリの内容をローカルに複製するには、Gitのクローン(Clone)と呼ばれる操作を行います。
実行されると、リモートリポジトリの内容がローカル環境に複製することが出来ます。
また変更履歴も同時に複製されるので、元々のリポジトリと同じように参照やコミットを行うことが出来ます。
大規模なプロジェクトの場合は多くのファイルを取得・コピーすることとなるので、最新のソースファイルを取得する目的のみならばオプションでリビジョンを指定することも出来ます。

リモートリポジトリからフェッチ・プル

他の作業者との作業内容を確認する場合にGitのフェッチ(Fetch)と呼ばれる操作を行います。
後述しますが、プルと異なる点はリモートリポジトリの変更をローカルリポジトリにダウンロードのみでワークツリーには反映されませんので、必要があればローカルリポジトリにダウンロードした変更をワークツリーにマージする必要があります。

次にリモートリポジトリからローカルリポジトリに最新の変更履歴をダウンロードする際にGitのプル(Pull)と呼ばれる操作を行います。
Pullはフェッチとマージが同時に行われるようなイメージです。
とても便利なコマンドではありますが、仕組みを理解した上での利用をお勧めします。

ブランチ

ブランチとは履歴の流れを分岐して記録していくためのもので、分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができます。
また、分岐したブランチは他のブランチと合流(マージ)することで、一つのブランチにまとめ直すことが出来ます。

チームのメンバーは、他のメンバーの作業の影響を受けないように、メインのブランチから自分の作業専用のブランチを作成します。そして作業の終わったメンバーは、メインのブランチに自分のブランチの変更を取り込んでいきます。(上図の「master」や「topics」の事)このようにすることで、他のメンバーの作業による影響を受けることなく、自分の作業に取り込むことができます。
また、作業単位で履歴を残すことで、問題が発生した場合に原因となる変更箇所の調査や対策を行うことが容易になります。

参考リンク

記事を書く上で参考にさせていただいたサイト

まとめ

完全に紹介できた訳ではありませんが、まずは実際にGitに触れてみるのがオススメです。
コマンドラインで使うには敷居が高い…な方は以下のGUI系クライアントがお勧めします。

※WindowsにもSourceTreeはありますが、英語版となりますので日本語環境で使いたい方は上記をどうぞ。

ちなみにGitについては今更感ありましたが、半分はウチの社員向けですw
また、ご紹介が出来る機会があれば記事書いてみようかと思います。
(自分も大型プロジェクトなどでGit使うような案件経験したことないのでw)

それでは、また (‘、3_ヽ)_

rss登録
このエントリーをはてなブックマークに追加