前回、Flaskで作成したWebアプリを無料でデプロイする方法について調べていた際に、「Git(ギット)」と「GitHub(ギットハブ)」を使う必要があるサービスが有りました。
そもそもGitって何?というところから始まりましたが、調べてみると、Gitは「バージョン管理システム」と呼ばれるものの一つだそうです。そこで今回は、プログラミング学習を進める上で避けては通れない(らしい)「Git(ギット)」と「GitHub(ギットハブ)」に挑戦してみました!
- Gitって何? なぜ必要なの?(バージョン管理の基本)
- WindowsへのGitのインストール方法(Git for Windows)
- Gitの基本的な専門用語(リポジトリ、コミット、ブランチなど)とその意味
- Gitの基本的な使い方を図解やたとえで分かりやすく解説(
init
,add
,commit
,push
など) - GitHubアカウント作成とリポジトリ作成の簡単な流れ
- ローカルの変更をGitHubに反映させる方法
- Windows環境でGitを使い始める際のリアルなつまづきポイント
はじめに:なぜGitとGitHubを学ぼうと思ったか

Gitは「バージョン管理システム」と呼ばれるものの一つですが、「これを使うと何が便利なのか」というのが気になりますよね。
レポートや資料作成で、「ファイル名_v1」「ファイル名_v2_最終版」「ファイル名_v3_本当に最終版」…みたいにファイルが増殖しちゃった経験、ありませんか?
Gitを使うと、ファイルの変更履歴をスマートに記録・管理してくれるので、「いつ、誰が、どこを、どのように変更したか」が分かるようになります。
さらに、「あの時の状態に戻したい!」という時も、簡単に過去のバージョンを復元できるんです。これは便利ですね!

特にプログラミングでは、コードを少し変更したら動かなくなった、なんて日常茶飯事…。そんな時、Gitがあれば安心して変更前の状態に戻せます。また、複数人で同じプロジェクトを開発する際にも、誰がどのコードを書いたのか管理しやすくなるため、必須のツールとされています。
私の開発環境はWindowsです。今回は、Windows用のGit(Git for Windows)をインストールするところから、試行錯誤しながら学んだリアルな過程を、初心者目線で詳しく共有します。専門用語も、できるだけ分かりやすいたとえ話を交えながら解説していきますので、一緒に学んでいきましょう!
まずはGitをWindowsにインストール!

Gitを使うには、まず自分のPCにGitをインストールする必要があります。Windowsの場合は「Git for Windows」というものが公式から提供されています。これをインストールしましょう。
まずは、Git for Windowsの公式サイト にアクセスして、インストーラーをダウンロードします。

次に、ダウンロードしたインストーラーを実行します。基本的に、初期設定のまま「Next」を押していけばいいですが、気になった点や変更したほうが良い箇所があったため、その部分だけ解説します。

- Select Components:必要に応じてチェックを変更
- Choosing the default editor used by Git:「Vim」を使ったことがない人は変更を推奨
- Adjusting the name of the initial branch in new repositories:最近のトレンドである「main」に変更
Select Componentsの設定
「Next」で進んでいくと、コンポーネントの設定で複数の選択肢が出てきました。選択肢について調べてみたところ、基本的にはデフォルトの設定で問題ありませんでした。特にこだわりがなければ、このまま「Next」で進めましょう。選択肢について解説しておきますので、必要に応じてチェックをつけてください。

必須ではないもの
Open Git GUI here
- Gitにはコマンドラインツール(Git Bash)の他に、グラフィカルなインターフェース(Git GUI)も付属しています。GUIを使わないのであれば、このチェックを外しても構いません。コマンドライン操作に慣れている方や、他のGUIクライアント(SourceTree, VS CodeのGit機能など)を使う場合は不要です。
Scalar
- 非常に大規模なリポジトリを扱うのでなければ、必須ではありません。個人開発や小〜中規模のプロジェクトでは、チェックを外しても影響は少ないでしょう。
好みで追加しても良いもの
Check daily for Git for Windows updates
- 自動でアップデートをチェックしてほしい場合は、チェックを入れても良いでしょう。
Add a Git Bash Profile to Windows Terminal
- Windows Terminalを普段から使っている場合は、ここにチェックを入れるとGit Bashを簡単に起動できるようになり便利です。
- On the Desktop (チェックなし)
- デスクトップにGit BashやGit GUIのショートカットを作成します。
- Windows Explorer integration (チェックあり)
- Windowsのエクスプローラー(フォルダを開くウィンドウ)の右クリックメニューにGit関連の項目を追加します。
- Open Git Bash here (チェックあり): フォルダ内で右クリックした際に「Git Bash Here」というメニューが表示され、そのフォルダをカレントディレクトリとしてGit Bash(コマンドプロンプトのようなもの)を起動できます。非常に便利なので、チェックを入れておくことをお勧めします。
- Open Git GUI here (チェックあり): 同様に、右クリックメニューに「Git GUI Here」を追加し、Gitの基本的な操作をGUIで行えるツールを起動します。
- Git LFS (Large File Support) (チェックあり)
- 画像、動画、音声ファイル、実行ファイルなど、サイズの大きいファイルをGitで扱うための拡張機能(Git Large File Storage)をインストールします。容量の大きいファイルをバージョン管理する可能性がある場合に便利です。
- Associate .git* configuration files with the default text editor (チェックあり)
.gitconfig
や.gitignore
といったGitの設定ファイルを、Windowsで標準設定されているテキストエディタ(メモ帳など)で開くように関連付けます。ダブルクリックで設定ファイルを開けるようになります。
- Associate .sh files to be run with Bash (チェックあり)
.sh
という拡張子のファイル(シェルスクリプト)を、Git Bashで実行するように関連付けます。Windows環境でLinux/macOS向けのシェルスクリプトを実行する場合に便利です。
- Check daily for Git for Windows updates (チェックなし)
- Git for Windowsの新しいバージョンがリリースされていないか、毎日自動でチェックします。
- (NEW!) Add a Git Bash Profile to Windows Terminal (チェックなし)
- 比較的新しいターミナルアプリである「Windows Terminal」を使用している場合に、Git Bashをプロファイル(起動設定)として追加します。
- (NEW!) Scalar (Git add-on to manage large-scale repositories) (チェックあり)
- Microsoftが開発した、非常に巨大なGitリポジトリ(多数のファイルやブランチ、長いコミット履歴を持つもの)を扱う際のパフォーマンスを最適化するための追加機能です。
Choosing the default editor used by Gitの設定
最初に選択されているのは「Use Vim (the ubiquitous text editor) as Git’s default editor」です。これは、コミットメッセージの編集など、Gitがテキストエディタを必要とするときに「Vim」というエディタを起動するという設定です。
Vimは操作方法が独特で、特に初心者の方には「文字を入力できない」「保存して終了する方法がわからない」といった状況に陥りやすいエディタです。(画面の説明にも “while powerful, can be hard to use.” と書かれていますね)
実際、私もVimを少し触ったことがあるのですが、操作がかなり独特で慣れる前に挫折してしまいました…


Adjusting the name of the initial branch in new repositoriesの設定
これは、新しくGitリポジトリを作成(git initした時)の最初のブランチ名をどうするかを決める設定です。デフォルトでは、「Let Git decide」が選択されていますが、これを選ぶと、Gitの現在のデフォルトである「master」という名前が最初のブランチ名になります。
基本的にはこれで問題ないのですが、最近の動向として、GitHubなどの主要なプラットフォームでは、新しいリポジトリのデフォルトブランチ名が「main」になっています。
そのため、「Override the default branch name for new repositories」を選択したうえで、入力欄に「main」と入力されていることを確認して「Next」を選択しましょう。

インストールの確認
最後まで進めてインストールが完了したら、無事にインストール出来ているか確認してみましょう。
コマンドプロンプトやPowerShell、またはGit for Windowsと一緒にインストールされる「Git Bash」を開いて、以下のコマンドを入力します。
git --version
このコマンドでgitのバージョン番号が表示されれば、インストール成功です!

ローカルでGitを使ってみる

インストールができたので、いよいよGitを使ってみます。まずは自分のPC(ローカル環境)だけで、Gitの基本的な操作を体験しましょう。
Gitの基本的な流れ(たとえ話つき)
Gitでの作業は、大きく以下の3ステップで行うことが多いです。
- 作業する (ファイルを編集する)
- いつも通り、コードを書いたり、ファイルを修正したりします。
- 変更内容を「ステージングエリア」に追加する (git add)
- ステージングエリアとは?: コミット(セーブポイント作成)する変更内容を一時的に置いておく場所です。
- たとえ話: スーパーの買い物カゴのようなもの。レジ(コミット)に持っていく商品を選んでカゴに入れるイメージです。ファイル単位や、ファイルの特定の部分だけを選ぶこともできます。
- ステージングエリアの内容を記録する (git commit)
- コミットとは?: プロジェクトの特定の時点の状態を、メッセージ付きで保存する操作です。「セーブポイント」や「スナップショット」のようなもの。
- たとえ話: 買い物カゴの商品をレジで精算して、レシート(コミット履歴)をもらうイメージ。一度コミットすると、その時点の状態が記録され、後からその状態に戻ることができます。
図解すると以下のようになります。

Gitを実際に操作してみよう!
操作の流れを理解したところで、実際に手を動かしながら確認してみましょう!
プロジェクト用フォルダの準備
まず、Gitで管理したいプロジェクト用のフォルダを用意します。今回は、作業したい場所で「my_python_project」というフォルダを作り、そこに簡単なPythonスクリプト hello.py を作成してみます。
print("Hello, Git World!")
リポジトリの作成 (git init)
コマンドプロンプトやGit Bashなどを開き、cd 作業フォルダのパス
で先ほど作成したフォルダに移動します。そして、以下のコマンドを実行してリポジトリを作成します。
cd 作業フォルダのパス # 作業フォルダへ移動
git init
- プロジェクトのファイルやフォルダ、そしてそれらの変更履歴などをまとめて格納しておく場所のことです。
- このコマンドを実行すると、そのフォルダがGitリポジトリとして初期化されます。
- 先程の例えでいくと、記録するためのレシートを先に準備しておく作業です。
コマンドを実行すると以下のようなメッセージが表示され、フォルダ内に .git
という隠しフォルダが作成されます。この .git
フォルダに、Gitが管理するための情報(変更履歴など)が全て格納されます。絶対にこのフォルダを直接編集したり削除したりしないでください! (Windowsのエクスプローラーで「隠しファイル」を表示する設定にしないと見えません)
Initialized empty Git repository in 作業フォルダのパス/.git/
変更をステージング (git add)
hello.py を作成(または変更)し、その変更をステージングエリアに追加します。
# 特定のファイルを追加する場合
git add hello.py
# または、フォルダ内の全ての変更を追加する場合 (よく使います)
git add .
変更をコミット (git commit)
ステージングエリアに追加した変更内容を、メッセージ付きで記録します。
git commit -m "最初のコミット: hello.py を作成"
-m
オプションの後ろに、"
で囲んでコミットメッセージを書きます。- このメッセージは、「何のための変更なのか」を後で分かりやすくするための重要なメモです。具体的に書くのがコツ!
試した結果
私が初めてコミットを実施した際には以下のエラーが発生しました。これは、「コミットする人の情報(名前とメールアドレス)が設定されていないため、誰が変更したのか記録できません」というエラーです。

Gitでは、誰がどのような変更を行ったかを記録するために、コミット時に作者の情報(ユーザー名とメールアドレス)を記録します。そのため、最初のコミットを行う前に、以下のコマンドを実行してユーザー名とメールアドレスを設定する必要がありました。
git config --global user.email "あなたのメールアドレス"
git config --global user.name "あなたのユーザー名"
- 「メールアドレス」と「ユーザー名」は、この後GitHubの登録で使う予定のものを使用しましょう。
--global
オプションを付けると、このPC上の全てのGitリポジトリでこの設定が使われるようになります(通常はこの設定でOKです)。
この設定を行った後にもう一度コミットを行うと、以下のように無事にコミット出来ました!これで、最初のセーブポイントを作成出来ましたね!

状態と履歴を確認する (git status, git log)
これまでの内容がちゃんと記録されたか、確認してみましょう。状態や履歴の確認には、以下2つのコマンドを使用します。
# 現在のリポジトリの状態を確認
git status
# これまでのコミット履歴を確認
git log
git status
: 変更したけどまだステージングしていないファイル、ステージング済みのファイルなどを教えてくれます。「作業漏れがないか?」を確認するのに便利です。git log
: これまでのコミット履歴(誰が、いつ、どんなメッセージでコミットしたか)の一覧が表示されます。プロジェクトの歴史を辿ることができます。
試した結果git status
とgit log
を実行すると、以下のように出力されました。それぞれのコメントの意味を調べた結果をまとめておきます。

- On branch main
- 「あなたは今 main という名前のブランチ(作業の流れやバージョン)にいますよ」という意味です。
- Gitでは、機能追加やバグ修正など、作業の種類ごとにブランチを作って、他の作業と混ぜずに進めることができます。main は、一番基本となる完成版のコードを入れておくブランチで設定時に選んだものですね。
- nothing to commit, working tree clean
- nothing to commit: 「(Gitに変更履歴として)記録(コミット)する準備ができている変更はありませんよ」という意味です。ファイルを変更して git add したものが何もない状態です。
- working tree clean: 「作業フォルダ(ワーキングツリー)はきれいな状態ですよ」という意味です。これは、前回コミットした状態から、ファイルに変更が加えられていないことを示します。

- commit 829e1088d2fa62f96291b44b1fd755f7e621dea7
- これがコミットID(コミットハッシュ)と呼ばれるものです。それぞれのコミットに付けられる固有の背番号のようなものです。このIDを使えば、後から特定のコミットを指定することができます。
- (HEAD -> main)
- HEAD とは?: Gitにおける「現在の作業場所を示す目印」だと思ってください。今あなたがリポジトリの中で「どこを見ているか」「どのコミットをベースに作業しているか」を指しています。ちょうど、本を読んでいるときの「しおり」のような役割です。
- -> main とは?: その HEAD(しおり)が、現在 main という名前のブランチを指していることを意味します。
- Author: ユーザー名 <メールアドレス>
- このコミットを行った人の名前とメールアドレスです。
- Date: Fri Apr 18 14:37:25 2025 +0900
- このコミットが行われた日時です。+0900 はタイムゾーン(日本時間)を示しています。
- 最初のコミット : hello.py を作成
- これはコミットメッセージで、「どんな変更をしたか」をメモとして記録したものです。
まとめ
ここまで学んだ内容をまとめると、以下のようになりますね。
git init
で .git フォルダを作成git add .
でファイルをカゴに入れるgit commit -m "..."
でセーブポイント作成!git status
は、今自分がどの段階にいるのか(ファイルを変更しただけか、ステージングしたか、コミット済みか)を確認git log
で自分のコミットの記録を確認
GitHubと連携:オンラインにバックアップ&共有

ローカルPCでGitを使うだけでも十分便利ですが、「GitHub(ギットハブ)」というWebサービスと連携させると、さらに活用の幅が広がります。
Gitの仕組みを利用した、開発プロジェクトのためのWebサービスです。主な機能は以下の通り。
- リモートリポジトリのホスティング: ローカルで作ったGitリポジトリを、インターネット上に保存しておく場所(リモートリポジトリ)を提供してくれます。これにより、PCが壊れてもコードが失われる心配が減り、どこからでも自分のコードにアクセスできます(バックアップ)。
- コードの共有と公開: 自分のコードを他の人に見せたり、オープンソースプロジェクトとして公開したりできます。
- 共同開発の支援: 複数人でコードを編集したり、レビューしたりするための機能(プルリクエストなど)が充実しています。
GitHubとの連携
では、実際にGitとGitHubを連携していきましょう。以下の手順で進めます。
GitHubアカウント作成
GitHub公式サイト でアカウントを作成します(無料プランで十分です)。



リモートリポジトリ作成
GitHubにログインし、新しいリポジトリを作成します。リポジトリ名(例: my-python-project
)を決め、Public(公開)かPrivate(非公開)かを選びます。最初は README.md
などのファイルは追加せずに、「Create repository」ボタンを押すのがおすすめです。


ローカルリポジトリにリモートリポジトリを登録 (git remote add)
GitHubでリポジトリを作成すると、そのリポジトリのURL(HTTPSかSSH)が表示されます。このURLを、ローカルリポジトリに「リモートリポジトリの場所はここだよ」と教える必要があります。
# 例: HTTPSの場合
git remote add origin https://github.com/[あなたのユーザー名]/[リポジトリ名].git
ローカルのコミットをリモートに送信 (git push)
ローカルで行ったコミット(セーブポイント)を、GitHub上のリモートリポジトリにアップロードします。
git push -u origin main
push
: ローカルの変更をリモートに「押し出す」イメージ。-u origin main
: 少し複雑ですが、「今後、ローカルのmain
ブランチは、リモートのorigin
という名前のリポジトリのmain
ブランチと紐づけてね」という意味です。最初のpush時につけておくと、次回からはgit push
だけで済むようになります。main
: これはブランチ名です。Gitリポジトリを作成すると、デフォルトでmain
という名前のメインの作業ライン(ブランチ)が作られます。
試した結果
初回の連携時には、以下のような画面が表示されました。これは、gitとgithubを連携する際に「Git Credential Manager (GCM)」というツールを使って連携する設定画面のようです。次回からは表示されないので、サインインして連携しておきましょう。

- git remote add origin [URL] でローカルとリモートを紐付けるのが最初のポイント
- git pushを実行すると、Windowsの場合、「Git Credential Manager」というツールが認証情報を記憶してくれる
Github上で確認すると、以下のようにちゃんとオンラインへアップロード出来ていました。

まとめ
以上の手順で、GitとGitHubを連携することが出来ました。ここまでの内容を改めてまとめて図解すると、以下のような形ですね!しっかりとこの構造を意識しながら使っていきましょう!

【発展】ブランチを切ってみる – 安全に新しい機能を試す魔法

Gitの強力な機能の一つに「ブランチ(Branch)」があります。そこで、次はブランチを使ってみようと思います。
Gitのブランチ(Branch)とは?:例えを踏まえて
直訳すると「枝」ですが、Gitにおいては「作業履歴の流れを分岐させて、元の流れに影響を与えずに作業を進めるための仕組み」です。
例え話
ゲームで、メインストーリー(main
ブランチ)を進めている途中で、「ちょっと寄り道して、新しい装備を試したり、サブクエストを進めたりしたいな」と思ったとします。この時、メインストーリーのセーブデータとは別に、寄り道用のセーブデータ(新しいブランチ) を作るようなイメージです。寄り道がうまくいけば、その成果をメインストーリーのデータに反映(マージ)させることができますし、失敗してもメインストーリーのデータには影響がないので安心です。

ブランチを使うメリット
メリットとして、主に以下の2点が挙げられます。
- 安全な実験場:新しい機能の開発や、バグ修正、ちょっとしたコードの実験などを、現在の安定したバージョン(
main
ブランチなど)を壊す心配なく行えます。 - 並行作業:複数の機能を同時に開発したり、緊急のバグ修正を他の作業と並行して行ったりできます。
では、実際にブランチを使ってみましょう!
ブランチの使い方
ブランチ作成と移動 (git checkout -b または git switch -c)
新しいブランチを作成し、すぐにそのブランチでの作業を開始します。ブランチの作成と移動には、主に2つのコマンドがあります。(git switch
とgit checkout
)
※古いバージョンのGitを使っている場合や、古いチュートリアルなどでは git checkout -b
が使われています。
# 'feature/add-message' という名前のブランチを作成し、そこに移動
git switch -c feature/add-message
# 古い書き方(非推奨)
git checkout -b feature/add-message
git switch
とgit checkout
についてgit checkout
について
git checkout
は古くから存在するコマンドで、非常に多機能- ブランチの切り替え (git checkout <branch>)
- ブランチの作成と切り替え (git checkout -b <new-branch>)
- 特定のコミットへの移動 (git checkout <commit>)
- 作業ディレクトリのファイルを特定の状態に戻す (git checkout — <file>)
- この多機能さが、特に初心者にとっては混乱を招く原因となる
- 「ブランチを切り替えたいのか、ファイルを元に戻したいのか?」が分かりにくい
git switch
について
git switch
は、git checkout
の多機能性を解消するために導入された新しいコマンドgit switch
は、ブランチの切り替えと作成に特化(git restore
がファイル状態の復元 に特化)- ブランチの切り替え: git switch <branch>
- ブランチの作成と切り替え: git switch -c <new-branch> (-c は –create の略)
ブランチでの作業とコミット
新しいブランチでコードを修正し、通常通り git add
と git commit
を行います。このコミットは、現在いるブランチにのみ記録されます。
ブランチの切り替え (git checkout または git switch)
他のブランチ(例えば main
)に戻るには以下のコマンドを使います。
git switch main
# 古い書き方(非推奨)
git checkout main
ブランチの統合 (git merge)
あるブランチでの変更内容を、別のブランチ(通常は main
)に取り込むには以下のコマンドを実行します。
# 現在いるブランチ (例: main) に、'feature/add-message' ブランチの変更を取り込む
git merge feature/add-message
- マージ(merge)
- 二つのブランチの変更履歴を一つにまとめる操作です。
- コンフリクト(Conflict)
- もし、マージしようとしている二つのブランチで、同じファイルの同じ箇所が別々に変更されていた場合、Gitはどちらの変更を採用すべきか判断できず、「コンフリクト(衝突)」が発生します。
- この場合は、手動でどちらの変更を残すか(あるいは両方残すか)を修正し、再度コミットする必要があります。
ブランチを実際に使ってみよう!
では、実際に操作しながら確認してみましょう!hello.py に新しいメッセージを追加する作業を、新しいブランチで行ってみます。
# feature/add-message ブランチで hello.py を以下のように変更
print("Hello, Git World!")
print("Learning branches is fun!") # この行を追加
# 1. feature/add-message ブランチを作成して移動
git switch -c feature/add-message
# 2. hello.py を変更してコミット
git add hello.py
git commit -m "Add a new message about branches"
# 3. main ブランチに戻る
git switch main
# (この時点では、main ブランチの hello.py は変更前のまま)
# 4. feature/add-message ブランチの変更を main に取り込む
git merge feature/add-message
# (成功すれば、main ブランチの hello.py にも新しいメッセージが追加される)
今回はコンフリクトなく git merge が成功し、main ブランチのファイルも無事更新されました。ブランチを使えば、試行錯誤が格段にしやすくなることを実感しました。これは積極的に使っていきたい機能です!
まとめ
今回は、Windows環境でバージョン管理ツールのGitと、コード共有プラットフォームのGitHubの基本的な使い方を、専門用語の解説も交えながら学んでみました。Git for Windowsのインストールから始め、リポジトリの作成、コミット、GitHubとの連携、そしてブランチ機能まで、試行錯誤しながら一通り体験することができました。
「リポジトリ」「コミット」「ブランチ」といった専門用語も、たとえ話を交えることで少しはイメージが掴めたでしょうか? コマンド自体はシンプルでも、その裏にある概念を理解することが大切だと感じました。
- Gitはファイルの変更履歴を管理する「バージョン管理システム」であること。
- Git for Windowsをインストールすれば、Windowsでも問題なくGitが使えること。
- リポジトリ: プロジェクトの保管庫 (
git init
)。 - ステージングエリア: コミット前の変更置き場 (
git add
)。 - コミット: プロジェクトのセーブポイント (
git commit
)。 - GitHub: Gitリポジトリをオンラインで管理・共有するサービス。
- リモートリポジトリ: GitHub上の保管庫 (
git remote add
,git push
)。 - ブランチ: 安全に作業するための分岐 (
git switch -c
,git merge
)。 git status
やgit log
で状況を確認するのが大事。
まだまだGit/GitHubにはたくさんの機能があるようなので、これからもPythonやAIの学習と並行して、少しずつ使い方をマスターしていきたいと思います。この記事が、同じようにWindows環境でGit/GitHubをこれから学ぼうとしている方の、「なんだか難しそう…」という壁を少しでも低くするお手伝いができれば嬉しいです。