gitについて

この章のゴール

・gitの概念を理解する。

gitとは

プログラムを開発していく上で、途中まで書いたプログラムコード(ソースコード)を保存する時、どうしますか?

まず思いつくのは、「ソースコードをテキストとして、名前をつけて保存しておく」といった方法でしょうか。

しかし、ソースコードに少し修正を加えただけで毎回保存するのは、非常に大変で、ファイル名を間違えたりした場合には、どこのファイルに、どんな内容を書いたか区別がつかなくなります。

また、複数人で一つのシステムを開発する際には、「誰が、どのコードを、いつ書いたか」という内容まで保存するのはとても大変です。

さらに、同じファイルを複数人で編集する場合、同じファイルの同じ行を編集する可能性もあり、先に編集していた内容を、後から編集した人が上書きして消してしまう可能性もあります。

gitとは、上記のような問題を解決するために作られた仕組みです。

「プログラムコード」のことを「ソースコード」と呼び、こちらが一般的です。

gitの仕組みを解説

gitを理解する上で重要なのが、リポジトリコミットステージング領域という3つのワードです。

これらを順を追って解説しますので、ゆっくりと理解してください。

リポジトリ

リポジトリとは、ファイルやディレクトリの状態を記録する場所という意味です。

ここで重要なのは、リポジトリに保存されるのは、あくまでファイルの状態であって、ファイルそのものではありません。

ファイルの変更履歴が全て保存されるので、「5つ前の状態に戻す」、「ログを遡って3日前の状態に戻す」ということも簡単にできます。

「ローカルリポジトリ」と「リモートリポジトリ」

gitのリポジトリには、ローカルリポジトリリモートリポジトリの2つがあります。

ローカルリポジトリ

ローカルリポジトリとは、自分のPC上に作成するリポジトリのことで、作業した際、自分のPC(ローカル)のローカルリポジトリに、変更履歴が保存されます。

リモートリポジトリ

リモートリポジトリとは、サーバー上に用意されたリポジトリのことです。

複数人で開発を行う際に、自分の作業履歴をサーバーに一度アップして、他の人は、その変更を取り込みます。

ちなみに、サーバーにアップすることを「push(プッシュ)する」と言い、サーバーから変更を取り込むことを「pull(プル)する」と言います。

現場では、これらの会話を毎日のように聞くことになるので、覚えておきましょう。

変更をサーバーにアップする:push(プッシュ)する

サーバーから変更を取り込む:pull(プル)する

使い分けについて

特に、チーム開発を行う際に、作業の変更はローカルのリポジトリに反映されます。

しかし、そのまま開発を進めても、他の人のPC上には自分の開発した変更が反映されません。

他の人のPCにも変更を反映するには、ローカルリポジトリの内容をリモートリポジトリにプッシュして、他の人にはリモートリポジトリからプルしてもらう必要があります。

このように、実際の開発現場では、ローカルで作業した内容をプッシュして、そこからプルするという使い方をするのが一般的です。

  1. ローカルリポジトリで作業
  2. ローカルリポジトリの変更履歴をリモートリポジトリにアップ
  3. 他の人は、リモートリポジトリの変更を取ってくる

コミット

ローカルリポジトリに、作業の履歴を保存するためには、コミットという操作を行います。

コミットを実行することで、前回に保存したソースコードの状態から今まで変更履歴(差分)が、ローカルリポジトリに追加されます。

コミットをする度に、時系列に沿った形で履歴が保存されるので、「何月何日の状態にソースコードを戻したい」といった場合でも、すぐに遡って戻すことができます。

ステージング領域

コミットすることで変更履歴が保存されますが、コミットするファイルは、事前にトラッキング状態にしておく必要があります。

こちらで後述しますが、addコマンドを用いて、「どのファイルをコミットするのか」を指定します。

addコマンドで指定したファイルに対してコミットを行うことで、それらのファイルの変更履歴がリポジトリに追加される仕組みになっています。

ステージング領域とは、addした直後からコミットするまでの状態のことを指します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA