こんにちは、ECF Tech
ブログ担当 Michiです。
今回は「Gitをはじめよう」ということで、バージョン管理ツール「Git」について書いていきたいと思います。
対象読者
- コマンドプロンプト上でのコマンドである
cd
やdir
を使ったことがある - エクスプローラでファイル操作ができる
- バージョン管理やgitって何?という方
- ハンズオン形式で試せる資料がほしいという方
※なお、本資料はWindows向けの資料となっています。
Gitを試すための事前準備
本記事はハンズオン(使いながら学んでいく)形式となっています。実施するにあたり、次の2つの事前準備が必要となります。必要な方はリンク先をご参照ください。
Githubアカウントの作成
Github for Windowsのインストール
バージョン管理ツールとは
バージョン管理ツールとはなんでしょう。その事について理解するには、バージョン管理ツールがない世界を考えるとわかりやすいでしょう。
業務システム構築のために作られるプログラムは膨大で、多数のプログラムファイルを作ることとなります。
そこでバージョン管理ツールの登場です。バージョン管理ツールを簡単に説明するならば、ファイルの変更履歴を管理して、いつでも好きなの状態に戻せるといった能力を備えたツールです。これを用いることによって、上のようなミスをほとんどゼロにすることが可能です。
gitのバージョン管理システム
ではハンズオンを始めるにあたって、gitのしくみを少しだけ説明しておきたいと思います。
gitではリポジトリ(repository)と呼ばれるものでファイル履歴を管理しています。リポジトリは、ファイルの履歴を管理しているデータの総称です。ファイルの作成・変更・削除の情報はすべてこのリポジトリで管理しています。
リポジトリにはリモートリポジトリとローカルリポジトリがあります。リモートリポジトリはプロジェクトに参加するすべての作業者の共通リポジトリです。ローカルリポジトリは、作業者それぞれの作業フォルダにあるリポジトリです。次のようなイメージになります。
編集したファイルの内容をリポジトリに記録することをコミットといいます。コミットをしておくことで、その時点でのファイルの編集内容が記録されます。それによりこれ以降にファイルを編集したとしてもすぐにまたこの時点の状態まで戻すことができます。
Gitを始めよう!
まずは、githubでリモートリポジトリを作成します。
- リポジトリ名は自由です。ここでは「hello_repo」とします。
- Descriptionには、リポジトリの説明を入力します。
- Publicは公開リポジトリです。URLが分かればだれでも見ることができます。
- Initialize this repository with a READMEのチェックボックスは、READMEファイルを同時に作成します。 今回はチェックしません。
Create repositoryをクリックします。
Creating a new fileをクリックして、ファイルを作成してみましょう。
- ファイル名はreadme.txtとしています。
- テキストの内容は「はじめてのGit用リポジトリです。」と入力しました。
テキストファイルができたらコミットをしてみましょう。コミットをするときにはコメントを入れておくことができます。「Readmeを作成しました。」と入力してCommit new fileをクリックしましょう。
readme.txtファイルが1つ作成されていることがわかります。
ローカルリポジトリの作成
では次に自身のパソコン上にローカルリポジトリを作成します。
今回はC:\work01のフォルダをローカルリポジトリを置くためのフォルダ(以降、作業フォルダと省略)とします。
作業フォルダへ移動
C:\>cd C:\work01
このフォルダでリモートリポジトリをコピーしましょう。この操作を「クローン(clone)」といいます。
クローン操作により、リモートリポジトリの内容がローカルリポジトリにコピーされます。また、管理対象のファイルもコピーされます。
クローンするにはリモートリポジトリのURLが必要となります。Githubで次のように確認できます。
URLが分かったら次のコマンドでクローンします。
C:\work01>git clone https://github.com/XXXXXX/hello_repo.git
実行結果
Cloning into 'hello_repo'... remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done.
クローンができました。dirコマンドを実行するとフォルダができていることがわかります。
C:\work01>dir /b hello_repo
/b
オプションをつけると、ファイル名のみを表示できます。フォルダ移動するとファイルがあることがわかります。
C:\work01>cd hello_repo C:\work01\hello_repo>dir /b readme.txt
内容もちゃんとコピーされています。
はじめてのGit用リポジトリです。
これで作業する準備が整いました。では早速プログラム開発をするイメージで作業をしていきましょう。ファイルprogram01.txtを新規に作成し、次のように記述して保存します。
計算できる機能A
計算できる機能Aが追加されました。
プログラムを作成したらローカルリポジトリにコミットしましょう。
といっても新規に作成したファイルprogram01.txtはまだGitに管理されている状態ではありません。git status
コマンドを使って、現在の状態を見てみましょう。
git status
実行結果
On branch master Your branch is up to date with 'origin/master'. Untracked files: (use "git add ..." to include in what will be committed) program01.txt nothing added to commit but untracked files present (use "git add" to track)
Untracked filesの中にprogram01.txtがあるのがわかります。これはそのファイルがUntracked(追跡されていない)ことを表します。つまり、Gitの管理対象になっていません。
まずはprogram01.txtをGitの管理対象にしましょう。そのためには、git add
コマンドを実行します。下のように入力し、Enterキーを押します。
git add program01.txt
実行結果
Your branch is up to date with 'origin/master'. Changes to be committed: (use "git reset HEAD ..." to unstage) new file: program01.txt
program01.txtがGit管理の対象となりました。
これでコミットの準備ができました。git commit
コマンドを実行しましょう。
git commit -m "機能Aを追加"
-mはコメントをつけるためのオプションです。コメントは"
で囲みます。
実行結果
[master 4fa5146] 機能Aを追加 1 file changed, 1 insertion(+) create mode 100644 program01.txt
コミットが完了しました。
ではもう少し作業を行ないましょう。再度program01.txtを開き、次のようにして保存します。
計算できる機能A 計算できる機能B
次にprogram02.txtを新規に作成。次を記述し保存します。
表示するための機能A
ここで2つのファイルをコミットします。が、ここで注意すべき点があります。それはprogram01.txtもgit add
コマンドで追加しなければならないということです。
ここでGitのファイル管理方法について確認しておきましょう。Gitでは作業フォルダ内のファイルを、次のような状態を持つものとして管理します。
- untracked(管理対象外)
- tracked(管理対象)
- unmodified(変更がない)
- modified(変更がある)
- staged(コミット対象である)
※()内は直訳ではありません。
program01.txtは変更があったので、現在はmodifiedの状態です。コミットするためにはgit add
コマンドを用いてコミット対象ファイルとする必要があります。
このコミット対象ファイルとする操作はステージング(staging)と呼びます。
では、git add
コマンドで2つのファイルをコミット対象ファイルにします。
git add .
対象を.
とすることで、すべての修正ファイルをコミット対象ファイルにすることができます。
git commit
コマンドでコミットします。
git commit -m "計算する機能B、表示する機能Aを追加"
実行結果
[master 807b067] 計算する機能B、表示する機能Aを追加 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 program02.txt
今回の開発作業はここまでです。といっても今のままではまだ, 自分のPC内のローカルリポジトリにプログラムが保存されているだけで、プロジェクトに参加している人全員が見られるリモートリポジトリにはプログラムがありません。
なので、最後にここまでの作業をリモートリポジトリに記録しましょう。この操作はPush(プッシュ)と呼びます。git push
コマンドで行います。次を入力しEnterを押します。
git push origin master
git push
コマンドは、git push リポジトリ名 ブランチ名
の順番で指定します。「origin」はリモートリポジトリを示すために用意された名前です。ブランチについては次回説明させて頂きますので、まずはこのコマンドでリモートリポジトリへPushできることを知っておきましょう。
これでリモートリポジトリに、ローカルリポジトリの変更内容が反映されました。
GitHubでリモートリポジトリの状況を確認してみましょう。ファイルが追加されていることが確認できると思います。
おわりに
今回はここまでとさせていただきます。最後までご覧くださり、ありがとうございました。
スタート編の名のとおり、まずは始められる基本的な情報のみをお伝えしました。実際には、記事中に少し登場したブランチというしくみを用いた利用方法が一般的です。次回はブランチをテーマにGitの本質にもう少し迫っていけたらと思っています。
バージョン管理ツールの利用は、はじめは少し戸惑いもありますが使い慣れればとても便利です。最近ではシステム開発の現場に限らず、大学の研究室や論文作成にも活用されているようです。
合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。