GitHub Desktopを入れたものの、最初の画面で手が止まっている人に向けて書きます。サンプル料理教室の代表が料金表を直して、GitHubへ送り、確認を頼むプルリクエストを作るまでを1本で通します。どの道具を選ぶかは「GitHub Desktop・Sourcetree・VS Codeの使い方と選び方」に書いたので、ここではGitHub Desktopを使い始める人の手順に絞ります。読み終わると、ひととおりの操作を自分で進められ、間違えたときの戻し方も判断できます。
画面の文言はGitHubの公式ドキュメントに載っているものだけを書き、同じことをするGitのコマンドは実際に動かした表示を載せています。
この記事の内容
先に答えると
GitHub Desktopは、GitHubが作っている無料でオープンソースのアプリで、MacとWindowsで動きます。普段の流れは「Changes」で差分を見る、「Summary」を書いて「Commit to main」を押す、「Push origin」を押す、の3つです。
- Gitは履歴を残す仕組み、GitHubはそれを預ける場所、GitHub DesktopはGitに命令を出す窓口です
- サインインはブラウザで済みます。ユーザー名とパスワードをアプリに入れる方法はありません
- プルリクエストはアプリから作り始め、仕上げとレビューとマージはブラウザです
- 送る前の取り消しは「Undo」、送ったあとは「Revert Changes in Commit」、コミット前の変更を捨てるのは「Discard Changes」です
- コマンドでもGitを使うなら、Gitは別に入れます
GitとGitHubとGitHub Desktopの違い
| 名前 | 何か | サンプル料理教室では |
|---|---|---|
| Git | 変更の履歴を残す仕組み | website フォルダの履歴 |
| GitHub | 履歴を預けて共有するサービス | sample-cooking/website |
| GitHub Desktop | Gitの操作を画面でするアプリ | 代表のパソコンに入れる |
リポジトリは、ファイルと変更履歴を入れておく場所です。コミットは、変更を1回分の記録として残す操作です。ボタンで作ったコミットも、コマンドで作ったコミットも同じものなので、代表がGitHub Desktopで送った変更を、外注エンジニアBはコマンドで受け取れます。
入れて、サインインする
対応するのはmacOS 12.0以降と、Windows 10の64ビット版以降です(2026年11月時点)。Linuxは公式では未対応です。
インストール
github.com/apps/desktopを開きます。- Macは「Download for macOS」、Windowsは「Download for Windows」を押します。
- ダウンロードしたファイルをダブルクリックします。Macはzipを開いたあと、中のアプリをもう一度ダブルクリックします。
- インストールが終わると、GitHub Desktopが自動で開きます。
サインイン
- Macはメニューの「GitHub Desktop」から「Settings」、Windowsは「File」から「Options」を開きます。
- 「Accounts」を開きます。
- 「Sign Into GitHub.com」を押します。
- 「Continue With Browser」を押します。ブラウザが開きます。
- ブラウザで「Sign in」を押します。
- 2段階認証のコードを入れて「Verify」を押します。
- 案内に従ってGitHub Desktopに戻ります。
名前とメールを入れる
コミットには、誰が変えたかの名前とメールが記録されます。
- 同じ設定の画面で「Git」を開きます。
- 「Name」に名前を入れます。
- 「Email」の一覧からメールを選びます。一覧に無ければ「Other」を選んで入力します。
- 「Save」を押します。
ここのメールがGitHubのアカウントのメールと合っていないと、コミットの前に警告が出ます。名前とメールの考え方は「Gitのインストールと初期設定:MacとWindows、名前とメールと認証」に書きました。
リポジトリを手元に持ってくる
手元に持ってくる操作をclone(クローン)と呼びます。
- 「File」の「Clone Repository」を押します。
- 「GitHub.com」のタブを押します。
- 一覧から
sample-cooking/websiteを選びます。 - 「Local Path」の横の「Choose…」を押して、置くフォルダを選びます。
- 下の「Clone」を押します。
一覧に出ないときは、招待を承諾していないか、別のアカウントでサインインしています。GitHubの画面の「Open with GitHub Desktop」を押して始めることもできます。
画面の読み方
上の列に今のリポジトリと枝と送受信のボタン、左に2つのタブ、左下にコミットの欄があります。
| 表示 | 場所 | 意味 |
|---|---|---|
| 「Current repository」 | 上の列 | 今開いているリポジトリ。押すと切り替え |
| 「Current Branch」 | 上の列 | 今いる枝。押すと切り替え、新しい枝の作成 |
| 「Fetch origin」 | 上の列 | GitHubに新しいコミットがあるか確かめる。手元のファイルは変わらない |
| 「Pull origin」 | 上の列(受け取るものがあるとき) | GitHubのコミットを手元に取り込む |
| 「Push origin」 | 上の列(送るものがあるとき) | 手元のコミットをGitHubへ送る。送っていない数が出る |
| 「Changes」 | 左のタブ | まだコミットしていない変更の一覧。右に差分 |
| 「History」 | 左のタブ | 今の枝のコミットの一覧 |
| 「Summary」 | 左下 | コミットの短い説明 |
| 「Description」 | 左下 | 詳しい説明。空でよい |
| 「Commit to main」 | 左下 | 手元に記録するボタン。main のところは今いる枝の名前 |
ブランチ(枝)は、本番の中身とは別に作業するための線です。origin は、GitHub側を指す名前です。
ファイル一覧の色は、赤が削除、黄色が変更、緑が追加です。差分(変わった行だけの表示)の右上の歯車で、横並びの表示に切り替えられます。

料金表を直して送る
menu.html の基本コースを5,000円から5,500円に直す例です。
- 「Repository」の「Open in default editor」を押します。設定した編集用のアプリが開きます。
- 金額を直して保存します。
- GitHub Desktopに戻ります。左の「Changes」に
menu.htmlが出ます。 menu.htmlを押します。- 右の差分で、金額の行だけが変わっているか見ます。
- 「Summary」に「料金表を修正」と書きます。
- 「Commit to main」を押します。ここではまだ手元に記録しただけです。
- 上の「Push origin」を押します。ここでGitHubに届きます。
- 「Repository」の「View on GitHub」を押します。ブラウザで履歴に出ているか確かめます。
ファイルの左のチェックを外すと、そのファイルはコミットに入りません。.env のようにパスワードが入るファイルが一覧に出たら、チェックを外して止めます。差分の行を押して青を消すと、その行だけをコミットから外すこともできます。
同じことをコマンドですると、次のようになります。To の行の場所は練習用のフォルダなので縮めてあります。
$ git push origin main
To …/remote/website.git
0c0eb95..99936ac main -> main
0c0eb95..99936ac は、GitHub側の履歴がこの番号からこの番号へ進んだという意味です。各コマンドとの対応は「git add・commit・pushの違い:保存して送るまでの流れ」にあります。

枝を作って、プルリクエストへ
プルリクエスト(Pull Request、PR)は、枝の変更を本筋に入れていいかを確認する依頼です。夏の教室を add-summer-class という枝で作る例です。
枝を作って切り替える
- 上の「Current Branch」を押します。
- 「New Branch」を押します。
- 「Name」に
add-summer-classと書きます。 - 「Create branch based on…」で
mainを選びます。 - 「Create Branch」を押します。
- 上の「Publish branch」を押します。枝がGitHubに届きます。
枝を切り替えるときは「Current Branch」から枝を選びます。保存したままコミットしていない変更があると「Switch Branch」の窓が出ます。「Leave my changes on 今の枝」か「Bring my changes to 移る先の枝」を選び、「Switch Branch」を押します。どちらか分からないなら、先にコミットします。
プルリクエストを作る
- 夏の教室を書いて保存します。
- 「Summary」に「夏の教室を追加」と書きます。
- 「Commit to add-summer-class」を押します。
- 上の「Push origin」を押します。
- 「Preview Pull Request」を押します。枝と合流先の差分が出ます。
- 「base:」の一覧が
mainになっているか見ます。 - 「Create Pull Request」を押します。ブラウザでGitHubが開きます。
- ブラウザで題名と説明を書きます。
- ブラウザの「Create pull request」を押します。
アプリの中では、プルリクエストの一覧と中身を見られますが、コメントはできません。レビューとマージはブラウザです。外注エンジニアBが作ったプルリクエストは、「Current Branch」を押して一番上の「Pull Requests」から選ぶと手元で見られます。「Branch」の「View Pull Request on GitHub」でブラウザに移ります。レビューからマージまでは「プルリクエストとは:作り方・レビュー・マージの流れ」に続きます。

mainの変更を枝に取り込む
作業中に main が進んでいたら、枝に取り込んでおきます。
- 「Current Branch」を押します。
- 「Choose a branch to merge into add-summer-class」を押します。
- 一覧の
mainを押します。 - 「Merge main into add-summer-class」を押します。
- 上の「Push origin」を押します。
コマンドで同じことをすると、次のようになります。
$ git merge --no-edit main
Merge made by the 'ort' strategy.
index.html | 1 +
1 file changed, 1 insertion(+)
$ git log --oneline --graph -4
* 23bb2e8 Merge branch 'main' into add-summer-class
|\
| * dd9bc03 問い合わせの電話番号を修正
* | 85d2ef6 夏の教室を追加
|/
* 92a59e5 Revert "料金を6,000円に変更"
衝突が出たとき
衝突(コンフリクト)は、同じファイルの同じ場所を2人が変えて、どちらを残すかをGitが決められない状態です。データは失われていません。
合流しようとして衝突があると、公式の説明では「Merge main into add-summer-class」のボタンの上に警告が出て、解消するまで合流できません。直し方について公式は、テキストエディタ、コマンド、ほかの道具のどれでもよいと書いています。アプリの中の衝突の画面の文言は公式の説明に載っていないので、ここではコマンドで書きます。
- 「Current Branch」が
add-summer-classになっているか見ます。 - ターミナル(文字で命令する画面)で
websiteフォルダを開きます。 git merge mainを打ちます。menu.htmlをエディタで開きます。<<<<<<<、=======、>>>>>>>の3つの記号を消して、残す内容だけにします。- 保存します。
git add menu.htmlを打ちます。git commit --no-editを打ちます。- GitHub Desktopに戻って、「Push origin」を押します。
Gitは別に入れておく必要があります。実際に動かすと次のように出ます。やめたいときは git merge --abort で合流前に戻ります。
$ git merge main
Auto-merging menu.html
CONFLICT (content): Merge conflict in menu.html
Automatic merge failed; fix conflicts and then commit the result.
$ cat menu.html
<<<<<<< HEAD
<p>基本コース 5,800円</p>
<p>夏の教室 7,000円</p>
=======
<p>基本コース 5,600円</p>
>>>>>>> main
$ git status --short
UU menu.html
$ git merge --abort
$ git status --short
UU は両方が変えて止まっているファイルの印です。詳しい直し方は「コンフリクトの直し方:起きる理由と、解消の手順」に書きました。
取り消す:Undo、Revert、Discardの違い
似た名前が3つあります。迷ったら、GitHubへ送ったかどうかで決めます。
| 操作 | 場所 | 使う場面 | 起きること |
|---|---|---|---|
| 「Undo」 | 「Changes」の左下 | コミットしたが、まだ送っていない | コミットが消えて、変更は作業中に戻る |
| 「Revert Changes in Commit」 | 「History」でコミットを右クリック | 送ったあとに取り消す | 打ち消す新しいコミットが増える。元のコミットは残る |
| 「Discard Changes」 | 「Changes」の一覧のファイルのメニュー | コミットしていない変更を捨てる | 変更が消える。ごみ箱に日付の付いたファイルが残る |
送る前:Undo
- 左の「Changes」を押します。
- 左下の「Undo」を押します。
送っていないコミットにしか使えません。変更そのものは残るので、直してもう一度コミットできます。コマンドなら次のものが近い操作です。
$ git log --oneline -2
99936ac 料金表を修正
0c0eb95 料金表を追加
$ git reset --soft HEAD~1
$ git log --oneline -2
0c0eb95 料金表を追加
$ git status --short
M menu.html
送ったあと:Revert Changes in Commit
- 左の「History」を押します。
- 取り消したいコミットを右クリックします。
- 「Revert Changes in Commit」を押します。
- 上の「Push origin」を押します。
複数を戻すときは、新しいほうから順に戻します。順番を間違えると衝突が出ることがあります。
$ git revert --no-edit HEAD
[main 92a59e5] Revert "料金を6,000円に変更"
Date: Sun Nov 8 01:07:50 2026 +0900
1 file changed, 1 insertion(+), 1 deletion(-)
$ git log --oneline -3
92a59e5 Revert "料金を6,000円に変更"
352daa1 料金を6,000円に変更
99936ac 料金表を修正
コミット前:Discard Changes
- 「Changes」の一覧で、捨てるファイルを選びます。
- ファイルのメニューから「Discard Changes」を押します。
- 「Confirm Discard Changes」の窓で、対象のファイルを見ます。
- 窓の「Discard Changes」を押します。
「Prompts」の設定で、破壊的な操作の確認を切り替えられます。「Discard Changes」の確認が含まれるかは、公式の説明に書かれていません。ごみ箱を空にする前なら、そこから取り戻せます。コマンドの git restore にはこの逃げ道がありません。Gitの履歴にも残らないので、捨てる前に差分を読みます。
複数のコミットをまとめて戻す「Reset to commit」も「History」の右クリックにあります。送っていないコミットの範囲でだけ使えます。途中で別の作業に移りたいだけなら、捨てずに「Stash All Changes」で一時的にしまいます。戻すときは「Stashed Changes」から「Restore」です。

できないことと、その代わり
| できないこと | その代わり |
|---|---|
| プルリクエストへのコメント、レビュー、マージ | ブラウザで行う。コマンドなら gh pr review、gh pr merge |
| 誤って送った秘密を履歴から消す | git filter-repo と force push。「APIキーやパスワードをGitHubにpushしてしまったときの対応」へ |
| 履歴の細かい操作を全部ボタンで済ませる | git reset --hard や git reflog などは git で打つ。外注エンジニアBに頼む |
| コマンドとしてGitを使う | Gitを別に入れる |
| Linuxで使う | VS Codeなど別の道具を使う |
| 保護された枝へのforce push、枝の削除 | 枝の保護を決めている管理者に相談する |
gh はGitHub CLI(GitHubの操作をコマンドでする道具)です。GitHub DesktopとGit、gh は同じリポジトリに混ぜて使えます。Sourcetreeに乗り換えるときも同じフォルダをそのまま使えます。枝の図を重視するなら「Sourcetreeの使い方:画面の読み方とコミット・プッシュ・枝の操作」を参考にしてください。
よく詰まるところ
| 症状 | 原因 | 直し方 |
|---|---|---|
| 「Commit to main」が押せない | 「Summary」が空、または全部のチェックが外れている | メッセージを書き、入れるファイルにチェックを付ける |
| コミットしたのにGitHubで見えない | 手元に記録しただけで、送っていない | 「Push origin」を押す |
ログ(「Help」の「Show Logs」)に Error: Bad credentials や (empty token) と出る | 認証が切れている | サインアウトして、もう一度サインインする |
repository ... not found に近い文言が出る | そのリポジトリの権限が無い | Organizationの権限を管理している人に頼む |
Permission denied (publickey). と出る | SSHの鍵が無いか、無効 | 公式によるとGitHub DesktopはHTTPSで繋ぐ。リモートのURLをHTTPSに変える |
| 「New Commits on Remote」と出る | Bが先に送っている | 「Fetch」を押してから「Pull origin」で取り込み、そのあと送る |
| コミットのときに保護された枝の警告が出る | main が直接の変更を禁じる設定 | 枝を切り替えて、そちらへコミットする |
| 枝を作ろうとすると警告が出て作れない | ルールで枝の名前が決められている | 決まった形の名前にする |
| 枝が削除できない | 開いたプルリクエストに紐付いている | 先にプルリクエストを閉じるかマージする |
| エディタが開かない | 既定のエディタが未設定、または起動中に新しく入れた | 「Integrations」の「External Editor」で選ぶ。入れたばかりならアプリを開き直す |
次に読む
- GitHub Desktop・Sourcetree・VS Codeの使い方と選び方
- プルリクエストとは:作り方・レビュー・マージの流れ
- git add・commit・pushの違い:保存して送るまでの流れ
- Sourcetreeの使い方:画面の読み方とコミット・プッシュ・枝の操作