Git ってなに? ~ 基本中の基本のサイクル 編 ~

Git ってなに?

この記事は,初めて Git に触れる方を対象に書いたものです. 「Git ってなに?」というザックリした話と基本的な使い方の説明をします.

今回は「リポジトリ」「ステージング」「コミット」「プッシュ」「プル」「クローン」について紹介します.

リポジトリ とは

まず始めに「このフォルダ内の ファイル/フォルダ を扱います」と宣言してあげます.
この宣言で「リポジトリ」を作ることができます.
リポジトリ」とは Git で扱うフォルダやファイルを一括りにしたものです. Git はこの「リポジトリ」の中身について変化を記録していきます. 厳密には違いますが,「Git が扱う最上階のフォルダ」と考えてもいいでしょう.

f:id:flanny7:20190224215509j:plain

ヒント:git init

バージョン管理をする とは

リポジトリ」を用意して Git を使えるようにしたら,進捗ごとに記録を繰り返してバージョンを管理していきます

「バージョンを管理する」というのは,コンピュータゲームで例えると「セーブする」のようなものです. 「いつ,誰が,どんなことをしたよ」というのを「コミット」という単位で記録していくのが,Git のバージョン管理になります. Git でバージョン管理をすることで,過去のバージョンに戻ることもできます.
また,GitHub のようなクラウド上で Git を使えるサービスを利用すれば,複数の人との開発も楽になります.

f:id:flanny7:20190224215513j:plain

Git で記録をする (ステージングとコミット)

さて,Git を使って「リポジトリ」に記録をします.

記録をするときは「ステージング」「コミット」という2つのコマンドを実行します.
「ステージング」は「セーブしたい変化を選択する」コマンドです.
「コミット」は「ステージングされた変更を記録する」コマンドです.

「コミット」は「進捗の記録」です. 「1つのコミット」は「1つの進捗の記録」と考えます. 進捗があるごとに「コミット」をすることで記録が蓄積されていくのです. 「コミット」には「どのファイルが増えた・減った・変更された」や「いつコミットされた」といった情報 ((git config --global user.namegit config --global user.mail などで "誰が" という情報を設定することができます)) が格納されています。

「ステージング」は「コミットする対象を決める」ことです. 「ここからここまでの変更がコミットしたい進捗だ」というように指定してあげます.

ヒント:git add *files/folders* git commit -m"*comment*"

進捗を分けて記録する

例えば「キャラクターの立ち絵を差し替えた」という進捗と「キャラクターのセリフを変更した」という2つの進捗があって,それぞれの進捗を別々に記録したいと考えます. その場合はステージングとコミットを2回に分けることで可能です.
まずは「差し替えた画像ファイルをステージング」して「"A子というキャラの立ち絵を差し替えた"というコミット」をします. 次に「変更したセリフのテキストファイルをステージング」して「"A子というキャラのセリフを変更した"というコミット」をします. これで2つのコミットとして分けて記録することができました.

f:id:flanny7:20190224215517j:plain f:id:flanny7:20190224215520j:plain

コミットにはコメントをつける

「コミット」には「コメント」を書かなければなりません. 上記の例えで「"A子というキャラの立ち絵を差し替えた"というコミット」や「"A子というキャラのセリフを変更した"というコミット」というような表現をしました. この "A子というキャラの立ち絵を差し替えた" や "A子というキャラのセリフを変更した" といった「どんな進捗なのか」を区別・判断するためにコメントを書きます.

あとで Git の履歴を見るときには,変更に対してコメントが表示されたりします. そのためどんな進捗なのかを具体的にコメントしてあげるようにしましょう.

f:id:flanny7:20190224215522j:plain

ヒント:git commit -m"*comment*"-m"***"

リポジトリを共有する (プッシュとクローン)

進捗を複数人で共有したりバックアップをとったりするために,Git を扱うクラウドサービスを利用して,リポジトリを共有することができます.

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

「ローカルリポジトリ」は,自分のパソコンに存在するリポジトリです.
「リモートリポジトリ」は,クラウド上に存在するリポジトリです.

Git には「ローカルリポジトリ」のコミットを「リモートリポジトリ」に反映させる機能や,「リモートリポジトリ」を「ローカルリポジトリ」としてダウンロードする機能があります.

f:id:flanny7:20190224215523j:plain

Git のクラウドサービス

リモートリポジトリを用意するためのサービスをいくつか紹介します.

私は GitHub をよく利用しています.

コミットをアップロードする(プッシュ)

「ローカルリポジトリ」の「コミット」を「リモートリポジトリ」にアップロードすることを「プッシュする」と言います.

蓄積した「コミット」を「プッシュ」によって「リモートリポジトリ」に反映させることができます.

f:id:flanny7:20190224215526j:plain

ヒント:git push *remote* *branch*

コミットをダウンロードする(プル)

「プル」とは逆に,「リモートリポジトリ」のコミットを「ローカルリポジトリ」へダウンロードすることを「プルする」と言います.

他人が「プッシュ」したコミットを「ローカルリポジトリ」に反映させたいときに良く使うコマンドです.

f:id:flanny7:20190224215531j:plain

ヒント:git pull *remote* *branch*

反映はしないで様子見だけする(フェッチ)

「プッシュ」する前に「リモートリポジトリ」の状況を確認したい場合が多々あります. このような,反映はさせず「リモートリポジトリ」の状況だけ確認したい場合は「フェッチ」をします.

「フェッチ」は「ローカルリポジトリ」に「リモートリポジトリ」のコミットを反映させることなく,「リモートリポジトリ」のコミットを取得することができます.

「プッシュ」する前に他人が「プッシュ」していないかを確認するときに良く使うコマンドです.   「プッシュ」や「プル」をする前に「フェッチ」をして確認するといいでしょう.

f:id:flanny7:20190224215552j:plain f:id:flanny7:20190224215556j:plain

ヒント:git fetch

リポジトリをダウンロードする(クローン)

「クローン」は「リモートリポジトリ」をダウンロードして,「ローカルリポジトリ」を作ることです.

「プル」とは違い,「コミット」を取得するのではなくてリポジトリそのものを取得します.

f:id:flanny7:20190224215559j:plain

ヒント:git clone *url*

まとめ

名前 説明
リポジトリ Git で扱うフォルダやファイルを一括りにしたもの
バージョン管理 進捗ごとに記録を繰り返すこと
ステージング コミットする対象を決めること
コミット 進捗の記録 ファルダやファイルの差分
コミットのコメント どんなコミットであるかを必ず記述する
ローカルリポジトリ 自分のパソコンに存在するリポジトリのこと
リモートリポジトリ クラウド上に存在するリポジトリのこと
プッシュ コミットをリモートリポジトリにアップロードすること
プル コミットをリモートリポジトリからダウンロードすること
フェッチ リモートリポジトリのコミット状況を確認すること
クローン リモートリポジトリをダウンロードすること

次回は『ちょっと進歩した基本のサイクル 編』ということで,「ブランチ」「チェックアウト」「マージ」「コンフリクト」について紹介します.