Git初心者必見!最低限これは覚えておこう

のえる のえる
2020.06.25

SubversionやMercurialなど、プログラムの開発で様々なバージョン管理を使用していると思います。

 

その中で今回は Git に焦点を当てて、初心者でもGitが使えるようになりましょう。

 

はじめに

今回の記事は Git初心者 を対象としています。

 

Gitを既に使用していて1ステップ上を目指したい方はこちらの記事をどうぞ

 

基礎知識

コマンド説明を始める前に、各用語についての解説をしていきます。
分かりやすいように可能な限りイメージにしていきます。

リポジトリ



 

プログラムやファイルを蓄積しておくための、貯蔵庫(データベース)のような場所 がリポジトリです。

 

Gitでは ローカルリポジトリリモートリポジトリ の2種類があります。

ローカルリポジトリ

現在作業をしているリポジトリを ローカルリポジトリ と言います。

 

分かりやすく言うと 作業しているPCのGit環境リポジトリ の事です。

 

作業領域であるワーキングツリーというものを伴っています。

リモートリポジトリ

ローカルリポジトリに対して、外部にあるリポジトリを リモートリポジトリ と言います。

 

ローカルリポジトリを通じて操作するものであり、ローカルリポジトリの参照先として設定されます。

 

複数人で作業する場合、このリモートリポジトリが全員の共有リポジトリとなります。

ワーキングツリー

リポジトリから取り出したファイルがローカルリポジトリに配置され、ユーザーが作業する場所が ワーキングツリー です。

補足

バージョン管理をしていくと、履歴が木のようになっていく様子から ツリー という表現が来ています。
また、この後出てくる ブランチ などの表現の由来でもあります。

ブランチ



 

ブランチ とは、履歴と流れを保存していくものです。

 

「枝」という意味のブランチですが、ローカル・リモート・リモートトラッキングの3つが存在します。

 

そのため、どのブランチを操作しているのかを意識するのが大事です。

ローカルブランチ

ローカルリポジトリで管理されるブランチを ローカルブランチ と言います。

 

リポジトリを作成すると自動的に master ブランチが作成されます。

リモートブランチ

リモートリポジトリにあるブランチを リモートブランチ と言います。

 

これは同じリモートリポジトリを利用するすべての人に見えるブランチです。

リモートトラッキングブランチ

リモートブランチをローカルリポジトリでトラッキングするためのブランチを リモートトラッキングブランチ と言います。

 

リモートブランチを参照するのに利用します。

チェックアウト



 

リポジトリにあるブランチをワーキングツリーに展開することを チェックアウト と言います。

 

ブランチだけではなく、タグやコミット、リモートリポジトリのブランチもチェックアウトができます。

 

これは特定コミットの動作確認をする場合などに利用できます。

タグ



 

コミットに対して特定の名前を付けることができることを タグ と言います。

 

リリースやバージョンなどを付けることができます。

コミット



 

ファイルの変更をリポジトリに登録することを コミット と言います。

 

コミットをするためにはまず 一時領域(インデックス) に追加(add)し、その一時領域にあるものをリポジトリにコミットします。

 

また、コミットには内容を記載するための コミットメッセージ が必要です。

コミットハッシュ値(リビジョン)

コミットをしていくと、各コミットごとにハッシュ値が生成され、これがリビジョンとして使用されます。

 

このコミットハッシュ値を指定して操作することができますが HEADORIG_HEAD など、特定の場所を意味する名前もあります。

基本的なGitコマンド

最低限の単語の説明が終わったところで、基本的なコマンドを紹介していきます。

リポジトリの作成 / git init

git initGitリポジトリを作成 します。

 

 

Gitを始めるスタート地点です。

 

基本的に実行後は .git フォルダができます。

ファイルをインデックスに登録する / git add



 

git addGitリポジトリへのコミット前にインデックスに登録・更新する ためのコマンドです。

 

 

ポイントは git add した時点の状態がインデックスに登録される ということです。

 

そのため git add した後に同じファイルの内容を変更すると、その部分はインデックスに登録されていませんので、再度追加する必要があります。

 

ファイルだけでなく、ディレクトリ単位でも追加することができます。

登録したくないファイルがあるとき

Gitの管理外にしたいファイル(APIキーやセキュリティSaltなどが書いてあるファイルなど)は .gitignore ファイルで指定することで、対象外にすることができます。

ファイルの差分を出力する / git diff



 

git diffファイルの差分を確認する ために使用します。

 

 

差分はブランチやインデックス、ワーキングツリー間の差分を確認できます。

 

また、ファイルを指定することで、そのファイルだけでの差分も取得可能です。

変更をローカルリポジトリにコミット / git commit



 

git commitインデックスに登録されているファイルの変更を、リポジトリにコミットする ためのコマンドです。

 

 

コミットには コミットメッセージ を入れることが必須です。
(-m で指定しなかった場合、入力画面が開きます)

 

コミットメッセージは自由に書くことができますが、書き方を統一しておくと、後で有用となることが多いです。

 

複数の人と開発する時に利用するコマンド

Gitは複数人や様々な機能を使用することで、効率的な開発が実現できます。

 

ここでは多人数開発の際に使用するコマンドの解説を書いていきます。

リモートリポジトリをローカルにコピーする / git clone



 

git clone指定したリモートリポジトリのコピーをローカルにコピーしてくる ためのコマンドです。

 

 

既に開発が開始しており、リモートリポジトリが既に存在する場合などに使用します。

 

補足

clone はデフォルトでHEADで指定されているリモートブランチを取得しますが、ブランチを指定したり、名前を指定することが可能です。

リモートリポジトリの管理および更新を行う / git remote

git remoteリモートリポジトリの管理・更新をする ためのコマンドです。

 

 

git init を実行した後は、リモートリポジトリの設定がされていません。

 

また、途中でリモートリポジトリのURLが変わることもあります。

 

そういう時に使用するコマンドになります。

 

あまり知られていないかもしれませんが、リモートリポジトリは複数指定することができ、グループ管理をすることも出来ます。

ブランチをマージする / git merge



 

git mergeブランチとブランチをマージ(統合)する ためのコマンドです。

 

 

git merge は ローカルリポジトリでのみ使用することができ、一つのコミットとして扱われます。

 

このマージは失敗(コンフリクト)することがあります。

 

ブランチの分岐後に同一ファイルが操作された場合、コンフリクトが発生し、当該箇所にコンフリクトマーカーが挿入されます。
(<<<<<<< や >>>>>> などです)

 

コンフリクトを解消させ git addgit commit をすれば、マージが完了します。

 

コンフリクトの解消方法は状況によって変わり、難易度が高いですが、これを避けてはGitが使えませんので、少しずつ覚えていきましょう。

リモートリポジトリにローカルリポジトリのデータを送信する / git push



 

git push登録してあるリモートリポジトリにローカルリポジトリのデータを送信する ためのコマンドです。

 

 

端的に言えば ローカルリポジトリにコミットしたものをリモートリポジトリへ送信する 場合などで使用します。

 

また git push は必ず成功するわけではありませんが、失敗するパターンは、大きく分けて2つです。

 

  • どちらかにしかないコミットがある
  • リモートブランチがチェックアウトされている

ローカルリポジトリにリモートリポジトリのデータを反映する / git pull



 

git pull登録してあるリモートリポジトリからローカルリポジトリにデータを反映する ためのコマンドです。

 

 

git pullgit fetch を実行し、その情報をもとに git merge を行っています。

 

このコマンドも必ず成功するわけではないですが、エラーは大体下記の2つです・

 

  • 変更したファイルがコミットされていない
  • ファイルの重複エラー

ブランチをチェックアウトする / git checkout



 

git checkoutリポジトリからブランチのデータをインデックスとワーキングツリーに展開する ためのコマンドです。

 

 

コミットしていない変更がある時でもチェックアウトはできますが、チェックアウト崎のブランチで変更が加えられていた場合はエラーになります。

 

また、ファイル単位でチェックアウトすることも可能です。

タグをつける / git tag



 

git tag各コミットにタグを付ける ためのコマンドです。

 

 

タグはローカルリポジトリだけでなく、リモートリポジトリへ登録できます。

リモートリポジトリからリポジトリデータを取得する / git fetch



 

git fetchリモートブランチから情報を取得する ためのコマンドです。

 

 

このコマンドはリモートリポジトリのコミットがローカルリポジトリに取り込まれただけなので、ワーキングツリーやインデックスに影響を与えません。

 

そのため、ローカルブランチに反映せずにリモートリポジトリにあるブランチやタグの情報を確認することができます。

さいごに

初めてGitに触れられる方はかなり情報量が多いですが、端的に分かりやすくするため、イメージと簡単な説明だけで解説してみました。

 

各コマンドは様々なオプションがあり、できることの幅が広がります。

 

このページの内容を理解できた方は下記の公式ドキュメントより、調べてみてください。

 

Git Documentation Reference

スポンサーリンク

POPULAR

のえる

のえる

Full-stack Developer