【Git】 Gitの操作の大まかな流れと説明(前編)
はじめに
今回はGitについて説明していきます。
(内容が長いため、前編・中編・後編に分けています。)
1. Gitとは
Gitとは、「プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システム」です。
上図のように、複数の開発者が一つのプロジェクトを開発する際などにその編集履歴を統一的に管理します。
それにより、必要に応じて特定の日時のバージョンを参照したり、その状態に戻したりすることができます。また、プロジェクトの時系列を分岐(ブランチ)させて派生プロジェクトを作成したり、それを再び元の系列に融合(マージ)したりすることもできます。
現在、そのGitのリモートリポジトリをネット上で作成・運用できるサービスとして「GitHub」や「GitLub」などがあります。
このようにGitはソフトウェア等の開発において欠かせない存在となっておりますが、その反面、使用法を誤るとせっかく積み上げてきたソースコードが全て消去されてしまったり、外部に漏洩したりするなど、大きな損害の原因となってしまいます。よって、正しく運用する方法を知っておく必要があります。
本記事では、そのGitの基本となる操作法の大まかな流れを説明していきます。今回は「Github」を例として用いますが、他のサービスでも基本的な操作は同じです。
前編では、主に1人で開発を行う場合の一連の操作法を紹介します。複数人(チーム)で開発を行う場合の操作法に関しましては中編(近日投稿予定)をご参照ください。
また、ブランチを切ったりプルリクエストを利用する方法については、後編(こちらも近日投稿予定)をご覧ください。
2. 事前準備①(リポジトリの作成)
まず、プロジェクトの各ファイルを格納するリポジトリ(ディレクトリ、フォルダ)をローカルとリモートのそれぞれで用意します。
(1) PC上でローカルリポジトリを作成します。
(今回は「JavaScript_Tutorial」という名前でプロジェクトを作成します。)
続いて、Github上でリモートリポジトリを作成します。
(2) Githubの画面で、「New repository(新規リポジトリ)」をクリックします。
(3) 「Repository name」にリモートリポジトリ名を入力し、「Create repository」をクリックします。
(4) GitのURLが表示されます。この後の項で使用するので、コピーします。
3. 事前準備②(ローカルリポジトリとリモートリポジトリの紐付け)
前項でローカルリポジトリおよびリモートリポジトリをそれぞれ作成しましたので、それらを紐付けます。
この項ではコマンドを使用しますので、まずコマンドプロンプト(Macでは「ターミナル」)を開きます。
(以後、本記事では文字の長さの都合上「ターミナル」と呼ぶこととします。Windowsの方は「コマンドプロンプト」に読み替えてください。)
(1) まず、以下のコマンドでGitのconfigファイルに自身のGithubのユーザー名およびメールアドレスを登録します。
% git config --global user.name "(Githubのユーザー名)"
% git config --global user.email (Githubに登録したメールアドレス)
configファイルに関する詳しい説明はこちらの記事(https://hara-chan.com/it/programming/git-config-system-global-local/)をご参照ください。
(2) ローカルリポジトリの初期化を行います。ターミナル上で作成したローカルリポジトリに移動し、以下のコマンドを入力します。
(ローカルリポジトリ名) % git init
(3) ローカルリポジトリにリモートリポジトリを追加します。以下のコマンドを入力します。
(ローカルリポジトリ名) % git remote add origin (前項の(4)でコピーしたURL)
(4) 以下のコマンドを入力します。
(ローカルリポジトリ名) % git remote -v
入力後、以下のように表示されれば正常に紐付けされています。
origin (前項の(4)でコピーしたURL) (fetch)
origin (前項の(4)でコピーしたURL) (push)
これでローカルリポジトリとリモートリポジトリの紐付けは完了です。
4. 変更内容のリモートリポジトリへの反映(push)
事前準備が終了したら、実際にプロジェクトを作成していきます。一通りのプログラムを作成した後、ローカルリポジトリにおける変更内容をリモートリポジトリに反映させます。
今回は、以下の画像で示したプログラムを作成したとします。
(1) 一通りのプログラムを作成したら、以下のコマンドを入力します。
(ローカルリポジトリ名) % git status
このコマンドにより、ローカルリポジトリにおける変更内容を確認できます。今回の例の場合では、ターミナルで以下のように表示されます。
上画像において、赤色で表示された部分がローカルリポジトリで変更(追加)されたファイルです。
(ちなみに、「.DS_Store」はMacのシステムが自動的に作成するファインダーファイルで、ファイルやフォルダを開いた際の位置や大きさ、背景色、カスタムアイコン等の情報を記憶しているメタデータの不可視なファイルです。特に必要がなければ削除しても構いません。)
(2) (1)で確認した変更内容を「インデックス」と呼ばれる領域に追加し、コミット((3)で説明)の対象にします。以下のコマンドを入力します。
(ローカルリポジトリ名) % git add (インデックスに追加したいファイル、またはフォルダ名)
一般的な定義は上記のように表現されます。もし変更内容全てを追加したい場合は、以下のコマンドを入力します。
(通常はこちらを使用する方が多いです。)
(ローカルリポジトリ名) % git add -A
(3) (2)でインデックスに追加した内容をリポジトリに記録します。以下のコマンドを入力します。
(ローカルリポジトリ名) % git commit -m "(コミットメッセージ)"
(commitの後に-mを添えると、コミットメッセージを入力することができます。メッセージは''(シングルクオーテーション)や""(ダブルクオーテーション)で囲います。)
コマンド入力すると、以下のように表示されます。
(4) 最後に、ローカルリポジトリの変更内容をリモートリポジトリに送信します。以下のコマンドを入力します。
(ローカルリポジトリ名) % git push (リモートリポジトリ名) (ブランチ名)
一般的な定義は上記のように表現されます。今回の場合は、以下のようになります。
(ローカルリポジトリ名) % git push origin master
初回pushの場合、以下のようにGithubのユーザー名およびアクセストークンを要求されるので入力します。
(Githubでは2021年8月13日よりパスワードのところがアクセストークンに変更されました。詳しくはhttps://qiita.com/shunsa10/items/e43564cf48f84b95455b の記事をご覧ください。)
(5) pushが正しく処理されると、ターミナルで以下のように表示されます。
(6) push後Githubを確認します。ローカルリポジトリで変更した内容がリモートリポジトリでも反映されていればOKです。
以上でpushまでの手順は終了です。
おわりに
今回はGitに関して、主に1人で開発を行う場合の一連の操作法を紹介しました。
しかし冒頭の図のように、Gitは複数人(チーム)が1つのプロジェクトを管理する際に特に効果を発揮するツールです。
そちらの操作手順に関しては、中編で紹介しておりますので、是非そちらもご覧いただけますと幸いです。
参考文献
・IT用語辞典 e-Words
(URL: https://e-words.jp/)
・ちゃんとメモとったか? 「Gitのconifgファイルを理解する(system, global, localの違い・場所・編集方法など)」
(URLは3.の手順(1)に記載)
・atmarkIT 「Linux基本コマンドTips」
(URL: https://atmarkit.itmedia.co.jp/ait/series/3065/)
・まりふのひと 「“.DS_Store”ってどんなファイル?」
(URL: https://ogohnohito.hatenablog.jp/entry/20090531/p1)
・Quita 「GitHubでhttpsのパスワード認証が廃止された。Please use a personal access token instead.」
(URLは4.の手順(4)に記載)