はじめに
前記事(https://qiita.com/hugo-crt/items/aa128860f7b0f494e6e3)
の続きです。
一旦AWSからは離れてGitのハンズオンを行います。
以下の記事を見てハンズオン学習します。
前提知識
リポジトリ:ソースコードなどのファイルをプロジェクト単位で区切った単位のこと。
リモートリポジトリ:GitHub上に作成されたリポジトリのこと。
ローカルリポジトリ:リモートリポジトリから作業端末に複製されたリポジトリのこと。
ブランチ:ある時点以降における、リポジトリの異なる世界線。例えば最終成果物であるmasterブランチがメインであるのに対して、メインのブランチをきれいに保てるよう、機能改善などで修正する際に、世界線を変えて編集すること。
(あくまで現時点で抱いているイメージです)
プルリクエスト:切り分けたブランチから最終的に積み上げる際に、積み上げてよいか確認するためのメッセージのこと。
マージ:切り分けたブランチをメインのブランチにまとめること。
CLONE:リモートからローカルにリポジトリを複製すること。
ADD:ローカルで編集したファイルをコミット対象にするため、インデックスあるいはステージングエリアという領域に移動させること。
COMMIT:編集した結果を(ローカル)リポジトリに反映させること。
PUSH:ローカルリポジトリにコミットした編集結果を、リモートリポジトリに反映させること。
DIFF:ローカルリポジトリにあるファイルと編集した同一ファイルの差分を表示させること。
必要なもの・こと
お好みのテキストエディタ(私はVS Codeを使用します)
GitHubのアカウント(事前に作成していたのでアカウントは作成済み)
自端末へのGitのインストール
今回は既に環境は整っている前提で、Gitの基本的な使い方を勉強します。
なお、Macでの作業を前提にしています。
リポジトリの作成
-
まずはGitHubにログインします。
-
Repository Nameにプロジェクト名、Descriptionには任意の説明(なくてもOK)、作成するリポジトリを公開するか否かを選択、READMEを追加するか否かを選択します。
作成したリポジトリをCloneする
作成したリポジトリを自端末で編集できるようにします。
具体的にはClone(リポジトリを自端末に複製する)して、テキストエディタで編集できる状態を作ります。
-
作成したリポジトリを選択して、<>Codeを選択し、Code▼をクリックします。
-
ターミナルを開き、CDコマンドでダウンロードしたいディレクトリまで移動します。
cd ~/git
-
ls
コマンドでクローン前の状態を確認してみましょう。
新規作成したディレクトリだと、実行結果として何も返ってこず、次のコマンドが打てる状態になっていると思います。
***@*** ~ % ls
***@*** ~ %
-
git clone
コマンドを打って自端末にリポジトリをクローンします。
git clone <先ほどコピーしたものをペースト>
以下のようにコマンド結果が返ってきます。
Cloning into 'handson'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
Receiving objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
- 親ディレクトリまで戻って、ローカルにリポジトリがクローンできているか
ls
コマンドで確認しましょう。
***@*** git % ls
handson
これでローカルで編集できる環境が整いましたね。
追加・編集したテキストファイルをADD・COMMIT・PUSHする
- 先ほどリモートリポジトリを作成した際にREADMEを追加したので、編集して保存します。
- コミット対象にするため、
add
コマンドを実行します。
git add handson.txt(指定ファイルのみ)
もしくは
git add .(全件)
- 次にコミットして変更内容をローカルリポジトリに反映させます。
ダブルクオーテーションで囲っている部分に修正内容のコメントが入力できます。
業務では大切な部分なので、コミットする際は -m を付与してコメントする癖をつけましょう。
***@*** handson % git commit -m "1回目の編集"
[main *****] 1回目の編集
1 file changed, 2 insertions(+), 1 deletion(-)
- ローカルリポジトリにコミットした差分をリモートリポジトリに反映させます。
***@*** handson % git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 287 bytes | 287.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:******/handson.git
*****..***** main -> main
これで基本的な差分管理が完了しました。
リモートリポジトリに反映されているか見に行きましょう。
反映されていますね。これで基本的な使い方を学習できました。
Pull Request〜マージ
業務では複数人で開発することが大半です。そのため、誰がどのような修正をしたか、ちょっとした前提の違いでデグレードが発生してもおかしくないですよね。
それもあってか、ローカルで修正したものをPullいいか、もっというならばレビューしてもらうためにPull Requestを作ります。
もちろん最終成果物的立ち位置のmasterブランチやmainブランチは頻繁に更新するものではなく、編集が完了して初めて積み上げるべきものです。
したがって、編集用の世界線であるブランチを切ることで余計コストをかけずに編集することができます。
- そこで、まずは作業用ブランチを 新たに 切ってみます。
***@*** handson % git checkout -b develop
Switched to a new branch 'develop'
ちなみにブランチを 既存の ブランチに戻したい場合、git checkout <ブランチ名>
コマンドを実行します。
新たにブランチを切った時のコマンドオプション-b
は新規にブランチを切るオプションです。
- この状態で前回同様READMEファイルを編集します。
-
git diff
コマンドで編集内容を確認してみましょう。
***@*** handson % git diff
diff --git a/README.md b/README.md
index ***..*** 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
# handson
Hallo World!
+Whats up!
+の部分は編集で追加されたもの、-は削除されたものです。
- このままadd、commit、pushします。
***@*** handson % git add README.md
***@*** handson % git commit -m "developブランチで編集"
[develop 6580611] developブランチで編集
1 file changed, 1 insertion(+)
***@*** handson % git push
fatal: The current branch develop has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin develop
あれ。。。なんか最初にpushした時と挙動が違う。
そうなんです。これはなぜかというと、最初のpushした時は既にファイルが存在していたから。
なので、お返事に書いてあるコマンドを実行することで解決します。
***@*** handson % git push --set-upstream origin develop
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 311 bytes | 311.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'develop' on GitHub by visiting:
remote: https://github.com/*******/handson/pull/new/develop
remote:
To github.com:******/handson.git
* [new branch] develop -> develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
リモートリポジトリで確認してみましょう。
mainには今回のコミット履歴がありません。
ブランチをmainからdevelopに変更すると、コミットされていることがわかりますね。
それでは次はPull Requestを作成します。
この状態で初めてマージ可能ですよ、とメッセージが表示されます。
では次はレビューをしてみましょう。
これにて終了です。
少なくとも個人で開発する際には最低限コミットをして、(セルフ)レビューできる状態になりました。
最後に
見返しても30分くらいでできるような内容だったのが、とても時間かかってしまいました。記事作成にも時間は取られますが、新情報的なものには理解までに他人よりも時間がかかってしまいます。
それでも手を動かしてその手順を形にすると頭に入る割合が全然違いますね。
参考にした記事と書いていることがほぼ同じで、車輪の再発明的なことになっているので、この記事はあまり参考にはならないでしょうが、勉強した軌跡ということで。