😼

個人でGit, GitHubを効果的に使う

に公開

そのままmainブランチにコミット&プッシュを無心で繰り返して、ある程度Gitを使えた気になっている私のような人いますか?いないか...
薄々このままでは良くないと思っていたので、ここらで自分のためになるようフローとステップをまとめ、効果的に使えることを目指します。

細かいことはどうでもいいって方は作業フローセクションまですっ飛ばしてください★

現在の運用方法について

mainブランチのみで直接commit & pushはダメか

  • 個人プロジェクトでは短期的には問題ない。
  • シンプルで学習コストが低い。

欠点

  • mainを常に安定・デプロイ可能な状態に保つことができない可能性。
  • 実務でのブランチ運用・プルリクエストの文化に慣れる機会の損失。
  • 複数デバイスの利用、将来的に他人が入ると混乱しやすい。

実務での考え方

  • チームでは通常、mainブランチは障害の少ない状態に保つ。
  • ブランチを使い、プルリクエストでレビューしてからmainにマージする運用が求められる。

まとめ

個人開発でmainブランチにcommit & pushは許容されるが、習慣としてfeatureブランチ + プルリクエストを身につけておく方が将来役に立つ。

Gitの基本

ローカルGit = 自分の変更履歴ノート(コミットで一時記録)
GitHub = リモートの安全なバックアップ & 公開場所(プルリクで履歴管理・レビュー)

ブランチは「新しい実験の場」。main(または master)は常に安定版に。
小さな単位でコミット → 意味あるコミットメッセージ → 頻繁にpush(レビューが楽になる)

個人開発向け戦略

普段はfeatureブランチを使い、GitHub上で自分に向けたプルリクエストを作ってセルフレビューしてからmainにマージする。

main:常にデプロイできる安定版
feature/xxx:新機能やタスクごとに作る(例 feature/login-ui)
hotfix/xxx:本番バグ対応

マージ方法

個人ならsquash mergeがおすすめ(プルリク内のコミットが一つのコミットにまとめられ綺麗)
普通にmergeでも可能(詳細なコミット履歴が残るため緊急時にRevertしやすい)

運用ルール

main直接コミット禁止 → 全てプルリクエスト経由でマージする。

使用ツール

今どきわざわざCUIで操作する必要もないのでGUIに頼ります。
古臭いことを言ってくる奴にはおビンタをお見舞いしましょう🌹

VSCode

左サイドバーのソース管理で差分確認/ステージ/コミット/プッシュまで可能。

おすすめの拡張機能

  • GitLens:履歴・行単位の責任者追跡
  • Git Graph:視覚ブランチ確認
  • GitHub Pull Requests and Issues:プルリクエストをVSCode内で作成/レビュー

VSCodeでブランチ切替・マージ・コンフリクト解消もできる(コンフリクトはエディタ上で手で編集→ステージ→コミット)

GitHub Desktop

リポジトリのクローン/ブランチ作成/コミット/プッシュ/プルリクエスト作成が直感的。
「何をpushしたか」を視覚で確認したいときに便利。

VSCode と併用

GitHub Desktopでブランチ作成 → VSCodeで編集 → GitHub Desktopでコミット → GitHub Desktopでpush
この流れが初心者には取り扱いやすい。

作業フロー

ざっくり

  1. GitHub Desktop で最新を取得 → main を同期
  2. GitHub Desktop で feature ブランチを作成
  3. VS Code で作業・保存
  4. GitHub Desktop で変更をステージ&コミット → Push
  5. GitHub Desktop(またはボタン)で PR を作成(ブラウザで開く)
  6. GitHub ウェブでセルフレビュー/CI確認 → マージ(Squash 推奨)
  7. GitHub Desktop と VS Code でローカルを更新・不要ブランチ削除

具体手順

開発開始:リポジトリの同期(GitHub Desktop)

  1. GitHub Desktopを開く
  2. 左上で該当リポジトリを選択
  3. 画面上部のFetch origin(または Fetch)をクリック → リモートの最新情報を取得
  4. (ローカルmainに最新を取り込みたいとき)Current Branchをmainに切り替えた上でPull originをクリックして同期完了

ブランチ作成(GitHub Desktop)

  1. GitHub Desktopの上部メニューでCurrent Branchをクリック
  2. 「Create new branch」を選択
  3. ブランチ名を入力(例:feature/login-form)→ Create branchをクリック
  4. 自動的にそのブランチに切り替わる

コーディング(VS Code)

  1. GitHub DesktopでRepository → Open in Visual Studio Code(またはリポジトリ右上の Open in Visual Studio Code)をクリック
  2. VS Codeでファイルを編集・保存
  3. 変更は自動でGitに検出される(左サイドバーのSource Controlアイコンで差分確認可)
    • VS CodeのSource Control でファイルを選んで「+」(ステージ)や「✓ コミットメッセージ入力 → Commit」を使うことも可能
    • ただし今回の流れは「GitHub Desktopでコミットする」前提なので、VS Codeでは編集と差分確認を行う程度でもOK

ステージ → コミット → Push(GitHub Desktop)

  1. GitHub Desktopに戻ると、変更ファイルがChangesタブに一覧表示される(差分も見られる)
  2. Summary欄にコミットメッセージ(例:feat(auth): add login form)を入力
  3. 変更を細かく分けたい場合はファイル毎にチェックボックスを切り替えてステージング可能
  4. Commit to feature/login-form をクリック(ローカルコミット)
  5. コミット後、上部にPush originボタンが表示される → Push originをクリックしてリモートへ送る

Pull Requestの作成(GitHub Desktop → ブラウザ)

  1. Push後、GitHub Desktopの右上にCreate Pull Requestボタンが出るのでクリック(これでGitHubのプルリクエスト作成ページがブラウザで開く)
  1. プルリクエストタイトルと本文(変更の目的、テスト手順、関連Issue番号など)を記入
  2. Create pull requestをクリック

プルリクエストのセルフレビュー・CI確認(GitHub ウェブ)

  1. プルリクエストページでFiles changedタブを開き、差分を確認(行ごとにコメント可)
  2. CI(Actions)が設定されている場合はChecksグリーンになるのを確認
  3. 問題なければMergeドロップダウン → Squash and merge(またはMerge pull request)を選択してマージ

    Squashは複数コミットをまとめるのでmainの履歴が読みやすくなる

  4. マージ後、Delete branchのボタンでリモートのfeatureブランチを消す(任意)

    Branchesページのゴミ箱アイコン

ローカルの後片付け(GitHub Desktop)

  1. GitHub Desktopに戻るとmainに切り替えていない場合はCurrent Branchでmainに切り替える
  2. Pull originでmainの最新を取り込む(プルリクエストでマージした内容をローカルに反映)
  3. 不要になったローカルブランチはBranch → Delete(またはCurrent Branch → Delete branch)で削除

トラブル発生時によく使うコマンド(おまけ)

ステータス確認

git status

変更差分

git diff(ステージ済み差分は git diff --staged)

戻す(作業ツリーを最後のコミットに戻す)

git restore <file>

ステージ取り消し

git restore --staged <file>

コミットをやり直す(直前のみ)

git commit --amend

ローカルの最後のコミットを残してファイルだけ戻す

git reset --soft HEAD~1

強制上書きでリモートの状態に合わせる(注意)

git fetch origin && git reset --hard origin/main

一時退避(作業を保存してブランチ切替たいとき)

git stash / git stash pop

競合解消後のコミット

git add . && git commit

Discussion