0.はじめに
前回ブログで基本的な「add,commit,push」を学習をしたので、そこからもう一段踏み込んでGitHubを利用できるようにしていきたいと思います。
有名サイトも参考にしつつ、実際に手を動かして確認した記録としてまとめました
- こちらの内容における有名サイト:サル先生のGit入門
1.基本的な用語
1.2.1.本ブログでの概念図
1.2.2.Git操作コマンド
No. | 本ブログの対象 | 操作名 | 詳細 |
---|---|---|---|
1 | 前回記載 | add | 変更をステージングエリアに追加すること |
2 | 前回記載 | commit | ステージングエリアからリポジトリに保存すること |
3 | 前回記載 | push | ローカルリポジトリのコミット履歴をGitHubのリモートリポジトリにアップロード(同期)すること |
4 | 〇 | clone | GitHubのプロジェクト(自分のものでも他人のものでも)を「ローカル環境(このハンズオンではCloud Shell)」にダウンロードすること |
5 | 〇 | merge | あるブランチの変更を別のブランチに統合すること |
6 | 〇 | pull | GitHubの最新の変更をローカルリポジトリに取り込むこと |
7 | 次回記載 | fork | GitHub上の他人のプロジェクトを「自分のGitHubアカウント」にコピーすること |
1.2.3.Gitの概念
No. | 本ブログの対象 | 用語 | 詳細 |
---|---|---|---|
1 | 前回記載 | リポジトリ(リモート/ローカル) | コードやファイル、変更履歴などの保存場所 |
2 | 前回記載 | ステージングエリア | コミット(変更の保存)する前に、変更を一時的に準備しておく場所 |
3 | 〇 | ブランチ(リモート/ローカル) | メインのコードから分岐した作業スペースのこと |
4 | 〇 | プルリクエスト(PR) | 自分の変更を他の人に確認してもらい、メインブランチにマージしてもらうリクエスト |
2.ハンズオン
前提条件
- GitHubにアカウントが作成済みである
- GoogleCloud の CloudShell環境から実施
- 前回ブログの作業が完了していること
2.1.GitHubを使う(clone)
- 前回作成した、以下のようなリポジトリの赤枠(上段側)で囲った緑部分(<>Code)を押下し、「SSH」タブを選択し自身の Clone URL(下段側の赤枠)を控えてから実施。
2.1.1.GitHubクローンを実施
# クローンの学習のため、もとのファイルを削除
rm -rf my-first-repo
# GitHubからリポジトリをクローン
git clone git@github.com:tetutetu214/my-first-repo.git
# クローンされたディレクトリに移動
cd my-first-repo
# 中身を確認
ls
README.md
2.1.2.ファイルを追加して、メインブランチに直接コミット
# 新しいPythonファイルを作成
cat > Hello.py << 'EOF'
import functions_framework
@functions_framework.http
def hello_http(request):
return 'Hello GitHub!'
EOF
# ステータスを確認(コメント:Untracked files)
git status
# ファイルをステージング
git add Hello.py
# 再度変更を確認(コメント:Changes to be committed)
git status
# 変更をコミット
git commit -m "Add Hello.py"
# コミット履歴を確認(HEAD(作業場所) -> master(ローカルブランチ コミット))
git log
# 変更をGitHubにプッシュ
git push
# コミット履歴を確認(HEAD -> master, origin/master(GitHubの最新コミット), origin/HEAD(GitHubのデフォルトブランチの位置)))
git log
2.2.ブランチの作成
2.2.1.新しいブランチの作成・切替え
# 新しいブランチ(feature-branch)を作成する
git branch feature-branch
# ブランチの一覧を確認(*がついているのが現在のブランチ)
git branch
feature-branch
* master
# ブランチを切り替える
git switch feature-branch
# ブランチの一覧を確認(*がついているのが現在のブランチ)
git branch
* feature-branch
master
2.2.2.ブランチで作業
# README.md ファイルの内容を変更
echo "" >> README.md
echo "## ブランチでの作業" >> README.md
echo "これは feature-branch で追加したセクションです。" >> README.md
# ステータスの確認(On branch部分が「feature-branch」となり、コメント:Changes not staged for commit)
git status
# 変更をステージング
git add README.md
# ステータスの確認(On branch部分が「feature-branch」で、コメント:Changes to be committed)
git status
# 変更をコミット(-m でコミットメッセージ)
git commit -m "Add branch section to README.md"
# コミット履歴確認((HEAD -> feature-branch)と表示され、(origin/master, origin/HEAD, master)が masterよりも1つコミットが進んでいる状態)
git log
##### 以下 git logのレスポンス例
commit XXX (HEAD -> feature-branch)
Author: tetutetu214
Date: Sat Apr 19 22:22:50 2025 +0000
Add branch section to README.md
commit YYY(origin/master, origin/HEAD, master)
Author: tetutetu214
Date: Sat Apr 19 21:53:01 2025 +0000
Add Hello.py
##### ここまで レスポンス
# 変更をGitHubにプッシュ(ここまでのブランチの切り替え、変更を反映させる)
git push -u origin feature-branch
2.2.3.GitHubでの反映確認
- 上段赤枠部分の「ブランチ」を「master」から「feature-branch」に切替える
- 下段赤枠部分の「README.md」に新しいコメントが追加されていることが確認できる
2.3.プルリクエストの操作(プルリクエスト)
- こちらの操作は、GitHub上で実施をします
2.3.1.プルリクエストページ遷移
- リポジトリページ上部「Compare & pull request」ボタンを押下する
2.3.2.ブランチの比較
- 上段赤枠の「base」に「master」で、「compare」に変更ブランチ(feature-branch)を選択
- 中段橙枠部分に「プルリクエスト」の内容(※自身で記載)
- 下段青枠部分に変更内容が表示
2.3.3.プルリクエスト実施
- 中段橙枠部分にプルリクエストを記載し、右下赤枠部分の「Create pull request」を押下
2.3.4.変更のマージ
今回は自分で作成したプルリクエストを自分でマージする
-
プルリクエストの画面より「Merge pull request」をクリック(※ レビューで問題がない場合)し、次に表示される確認ダイアログ(以下図の、右側部分)も「Confirm merge」を押下
-
マージが完了すると、不要になった「feature-branch」を削除するボタンが表示される。本ハンズオンでは「Delete branch」を押下して削除する
※削除されるのはGitHubのリモートブランチのため、現時点ではローカルブランチは残置されている状態
2.3.5.変更後の確認
- Branchの数が「master」だけの1つとなり、内容がマージされていることが確認できる
2.4.ローカルリポジトリの更新 (pull)
GitHub上でmasterブランチが更新されたので、ローカルも最新の状態に同期させる必要があります。
# master ブランチに切り替え
git switch master
# ブランチが切り替わったことを確認
git branch
feature-branch
* master
# リモート (origin) の master ブランチの最新の変更をローカルの master ブランチに取り込む
git pull origin master
# コミット履歴を確認
git log
##### 以下 git logのレスポンス例
commit XXX (HEAD -> master, origin/master, origin/HEAD)
Merge: 1f7c803 5189fd0
Author: tetutetu214
Date: Sun Apr 20 08:23:52 2025 +0900
#「プルリクエスト#1をマージしました」の意味
Merge pull request #1 from tetutetu214/feature-branch
READMEにブランチ作業に関するセクションを追加
##### ここまで レスポンス
# ローカル「feature-branch」の削除
git branch -d feature-branch
# ブランチの状態
git branch
* master
3.おわりに
3.1.得られた知見
- GitHubを使ったブランチ・プルリクの基本的な流れを理解する
3.2.今後の課題
- フォークとクローンを使って他のプロジェクトに貢献する方法を習得する