GitHub Desktopの使い方: ダウンロード、インストール、コマンドなしでGitを使う方法
GitHub Desktopは、GitHubが提供する無料のアプリで、WindowsとmacOSで利用できます。変更の確認、commit、push、pull、ブランチ、マージ、コンフリクト解決をボタン操作で行えます。desktop.github.comからダウンロードし、GitHubアカウントにログインして、リポジトリをcloneすれば使い始められます。
GitHub Desktopとは
GitHub Desktopは、GitHubがWindowsとmacOS向けに公開しているオープンソースの無料アプリです。変更されたファイル、コミット履歴、ブランチを画面に表示し、Gitの主要な操作をボタンのクリックで実行できます。アプリ内部にGitが組み込まれているため、別途Gitをインストールしなくても使えます。
「git desktopとは」と聞かれたら、GitHubに特化したGitのグラフィカルクライアントだと答えられます。ワンクリックでGitHub上のリポジトリをcloneでき、pull requestを作成してチェックの状態を確認できます。GitLabや自社サーバーなど、HTTPSでアクセスできる他のリモートリポジトリにも接続できます。
GitHub Desktopは、初心者、デザイナー、テクニカルライターなど、「変更する、commitする、送信する」という流れを分かりやすく進めたい人に向いています。経験豊富な開発者も、diffを視覚的に確認したり、行単位で部分的にcommitしたりするために使います。複雑な操作はターミナルで行うのが一般的です。
GitHub Desktopのダウンロード方法
公式のダウンロード先はdesktop.github.comです。サイトがお使いのOSを判別し、Windows向けのインストーラーやmacOS向けのアーカイブを提案します。ダウンロードは公式サイトか、GitHub上のdesktop/desktopリポジトリのリリースページからのみ行ってください。第三者のサイトで配布されている「無料ダウンロード」版には、何が含まれているか分かりません。
Linux向けの公式版はありません。コミュニティが維持するフォーク(shiftkey/desktopリポジトリ)が、.deb、.rpm、AppImage形式で配布されていますが、これは非公式のビルドです。Linuxでは、ターミナルやエディタに組み込まれたGitクライアントを使うほうが実用的です。
Windowsへのインストール
- ダウンロードしたGitHubDesktopSetupを実行します。
- インストーラーは追加の質問をせず、現在のユーザーのプロファイルにインストールして、そのまま起動します。
- 管理者権限は不要です。アップデートもアプリが自動でダウンロードします。
組織のコンピューターに導入する場合は、別途MSIインストーラーが用意されています。GitHub Desktopのドキュメントで探してください。
macOSへのインストール
- ダウンロードしたzipアーカイブを展開します。
- GitHub Desktopを「アプリケーション(Applications)」フォルダにドラッグします。
- アプリを起動し、インターネットからダウンロードしたプログラムとして開くことを確認します。
Intel版とApple Silicon版があります。サイトが通常は適切なほうを自動で選びます。Homebrewでインストールすることもできます。
brew install --cask github
アカウントへのログインと初期設定
初めて起動すると、GitHub.comへのログインを求められます。ログインボタンを押すとブラウザーが開き、アプリからアカウントへのアクセスを許可します。パスワードをアプリに入力する必要はありません。二要素認証もブラウザーで通常どおり行われます。GitHub Enterpriseを利用している場合は、専用のログイン方法があります。
続いて、Gitの設定として名前とメールアドレスを入力します。ここで入力した値は、すべてのcommitに記録されます。これは git config --global で設定する user.name と user.email と同じものです。すでにGitを設定済みなら、値が自動的に入ります。commitをGitHubのプロフィールに紐付けるには、アカウントに登録済みのメールアドレスか、ID+ユーザー名@users.noreply.github.com の形式のアドレスを指定してください。
後から変更する場合は、Windowsでは File → Options、macOSでは GitHub Desktop → Settings から設定できます。外部エディタ(VS Codeなど)やターミナルの指定、テーマの選択もここで行います。
リポジトリのclone
cloneとは、リモートリポジトリを履歴ごとコピーすることです。GitHub Desktopでは File → Clone repository から行います。ウィンドウには3つのタブがあります。GitHub.comにあなたのリポジトリ一覧、GitHub Enterpriseのリポジトリ一覧、そしてURLタブです。URLタブには、GitLabを含む任意のアドレスを貼り付けられます。
- 一覧からリポジトリを選ぶか、URLを貼り付けます。
- ローカルの保存先フォルダ(Local path)を指定します。
- Cloneを押し、ダウンロードが終わるまで待ちます。
同じことは git clone コマンドでもできます。GitHub上のリポジトリページで Code ボタンのメニューを開き、Open with GitHub Desktop を選ぶと、アドレスが入力済みの状態でアプリが開きます。書き込み権限のないリポジトリをcloneした場合、変更を送信しようとしたときにフォーク(fork)を作成するよう案内されます。
既存のGitプロジェクトのフォルダは File → Add local repository で追加します。新しいリポジトリは File → New repository で作成できます。この時点で .gitignore のテンプレート、ライセンス、README を選ぶこともできます。
GitHub Desktopでのcommitの作り方
左側のChangesタブには、変更されたすべてのファイルが並びます。右側には選択したファイルのdiffが表示され、削除された行は赤、追加された行は緑で示されます。ファイルの横にあるチェックボックスで、そのファイルをcommitに含めるかどうかを決めます。これはステージングエリア(staging area)と git add に相当します。
- commitしたくないファイルのチェックを外します。
- 必要に応じてdiff内の個別の行をクリックし、除外します。これが部分的なcommitで、
git add -pと同じ働きをします。 - 下部の Summary に短い説明を入力し、必要なら Description に詳細を書きます。
- Commit to <ブランチ名> ボタンを押します。
commitはまだローカルにだけ作成され、サーバーには送信されていません。GitHub Desktop commitを小さく、意味のある単位で行うと便利です。どのファイルや行がどのcommitに入ったかが分かりやすくなります。commitに誤りがあった場合は、直後に表示される Undo ボタンで取り消せます。送信前であれば、変更は作業フォルダに戻ります。
リポジトリに含めたくないファイルは、ファイルの右クリックメニューから除外できます。これを選ぶと、そのファイルが .gitignore に追加されます。未commitの変更を取り消すには、同じメニューの Discard changes を使います。変更は削除されます(WindowsやmacOSのごみ箱には残ります)が、元に戻せない操作として扱うのが安全です。
Push、Pull、Fetch: サーバーとの同期
ウィンドウ上部の主要なボタンは、状況に応じて表示が変わります。ここで git desktop push と git desktop pull を、1回のクリックで実行できます。
| ボタンの表示 | 何が起こるか | 相当するGitコマンド |
|---|---|---|
| Publish repository | ローカルリポジトリがまだGitHubにない。作成して送信する | remoteの作成 + git push -u |
| Publish branch | ブランチがローカルにしかない | git push -u origin ブランチ名 |
| Fetch origin | サーバーに新しいcommitがないか確認する | git fetch |
| Pull origin | サーバーに新しいcommitがあり、取り込む必要がある | git pull |
| Push origin | ローカルにcommitがあり、送信する必要がある | git push |
ボタンの横には、送信すべきcommitの数(上向き矢印)と、取り込むべきcommitの数(下向き矢印)が表示されます。アプリはバックグラウンドで定期的にfetchを行うため、同僚が何かを送信すると Pull ボタンが自動的に現れます。
手元のブランチとサーバーの間で履歴が分岐していて、双方に新しいcommitがある場合、pushは拒否されます。まず Pull origin を実行してください。Gitが変更をマージし、変更箇所が重なっていればコンフリクトが発生します。履歴を書き換えるforce pushは、rebaseなど既に送信済みのcommitを変更する操作の後にだけ提案されます。
ブランチの作成、切り替え、checkout
ブランチは、ウィンドウ上部の Current branch ドロップダウンメニューから管理します。このメニューには、ローカルとリモートのブランチ一覧、検索欄、New branch ボタンがあります。一覧からブランチを選ぶことが git desktop checkout です。アプリが作業フォルダをそのブランチに切り替えます。まだローカルにないリモートブランチを選ぶと、追跡設定付きのローカルブランチが作成されます。
新しいブランチは、現在のブランチまたはデフォルトブランチから作成されます。選択肢がある場合は、アプリが確認します。作成直後のブランチはあなたのコンピューターにしかないため、上部のボタンは Publish branch に変わります。ブランチの名前変更や削除は、Branchメニューか、一覧内のブランチの右クリックメニューから行います。削除時に、GitHub上のブランチも削除するかどうかを選べます。
作業が完了したら、Branchメニューの Create pull request を選びます。ブラウザーでGitHubのpull request作成ページが開きます。レビューとマージはそのサイト上で進めます。
GitHub Desktopでのmergeとrebase
別のブランチを現在のブランチに取り込むには、Current branch メニューの Choose a branch to merge into <ブランチ> を選びます(Branchメニューからも同じ操作ができます)。マージ前に、取り込まれるcommitの数や、コンフリクトが起きるかどうかが表示されます。これが git desktop merge で、通常の git merge と同じ働きをします。
同じメニューには、ブランチのすべてのcommitを1つにまとめる Squash and merge と、現在のブランチのcommitを選んだブランチの上に付け替える Rebase current branch があります。git desktop rebase がこれに当たります。既に送信済みのブランチをrebaseすると、サーバーの履歴と手元の履歴が食い違い、Push ボタンは Force push origin に変わります。他の人が作業していないあなたのブランチでのみ行ってください。
History タブでは、commitをドラッグして別のブランチに移動(cherry-pickに相当)したり、他のcommitの上に重ねて1つにまとめたり(squash)、順番を変えたりできます。すべての操作を備えた対話的なrebaseはありません。それには、ターミナルで git rebase -i を使う必要があります。
マージのコンフリクト
同じ行が両方のブランチで変更されている場合、merge、pull、rebaseの最中にコンフリクトしたファイルの一覧が表示されます。各ファイルは外部エディタで開いて手で直すか、自分の版か取り込まれる版のどちらかを丸ごと選べます。
エディタでは、コンフリクトは次のように表示されます。
<<<<<<< HEAD
const limit = 20;
=======
const limit = 50;
>>>>>>> feature/pagination
必要な版を残し、マーカーを削除してファイルを保存してください。すべてのファイルからマーカーが消えると、GitHub Desktopは解決済みとしてマークし、マージを続行するボタンを有効にします。このボタンでマージcommitが作成されます。問題が起きた場合は、同じウィンドウの取り消しボタンでマージを中止できます。これは git merge --abort に相当します。
GitHub Desktopでのgit stash
メイン画面に「stash」というボタンはありませんが、同じ仕組みはあります。コミットされていない変更を抱えたまま別のブランチへ切り替えると、アプリがその変更をどうするかを尋ねます。変更を現在のブランチに残すことを選ぶと、変更はstashに退避されます。これが git stash に相当する GitHub Desktop の動作です。
手動で退避するには、変更一覧の右クリックメニューから Stash all changes を選びます。元のブランチに戻ると、Changesタブの下部に Stashed changes という行が表示されます。そこで退避されたファイルを確認し、Restore で復元するか、削除できます。
制限事項: GitHub Desktopは、ブランチごとに1つのstashだけを保持します。複数のstashを扱う必要がある場合は、git stash pop で特定のエントリを指定するか、git stash apply stash@{1} を使ってください。これらはターミナルで行います。リポジトリメニューからターミナルを開けば、正しいフォルダで作業できます。
GitHub DesktopでのGit LFS
Git LFSは、動画、PSD、3Dモデルなどの大きなバイナリファイルを別のサーバーに保存し、リポジトリにはポインタだけを残す仕組みです。GitHub DesktopはLFSに対応しています。LFSを使用しているリポジトリをcloneまたは開くと、Git LFSの初期化を提案し、その後は大きなファイルを自動でダウンロードおよび送信します。
ただし、どのファイルをLFSで管理するかは、GUIでは指定できません。これは一度だけターミナルで行います。その後は git lfs の設定が GitHub Desktop の中で透過的に動作します。
git lfs install
git lfs track "*.psd"
git add .gitattributes
git commit -m "Track PSD files with Git LFS"
容量の上限にも注意してください。無料アカウントではLFSのストレージと転送量に制限があります。最新の上限は、アカウントの請求設定で確認してください。
Reset、revert、履歴
History タブには、現在のブランチのcommitと、それぞれの変更内容が表示されます。commitを右クリックすると、次の操作が利用できます。
- Revert changes in commit: 選んだcommitを打ち消す新しいcommitを作成します。既に送信したcommitに対しても安全に使えます。
- Create branch from commit と Create tag: 履歴上の任意の地点からブランチやタグを作成します。
- Amend commit: 直前のcommitに対して、メッセージを修正したりファイルを追加したりします。
- Reset to commit: 新しいバージョンのアプリで使えます。選んだcommitまでブランチを戻しますが、変更は作業フォルダに残します(
git reset --mixedに相当)。
変更を完全に破棄する git desktop reset(git reset --hard に相当)はGUIにありません。これは、初心者が作業を失わないようにするための意図的な設計です。必要な場合はターミナルで実行してください。失ったcommitは git reflog で探せます。
コマンドラインを使うべき場面
GitHub Desktopは日常的な作業の流れをカバーしますが、次のような操作は使えないか、扱いにくいです。
- すべての操作を備えた対話的なrebase、
git bisect、git reflog、git worktree; - 複数のstashエントリ、サブモジュール、remoteの細かい設定;
- SSHによるサーバー作業、スクリプトやCIでの自動化;
- 公式版が存在しないLinux。
また、面接で問われるのはコマンドそのものです。fetch、merge、rebase が何をするかを理解していると、GUIを使うときにも役立ちます。実践的なアプローチは、コマンドラインを確実に扱えるようにしたうえで、diffの確認、部分的なcommit、コンフリクトの解決など、時間を節約できる場面でアプリを使うことです。GitHub Desktopでは、リポジトリメニューからプロジェクトのフォルダでターミナルを開けます。
まとめ
GitHub Desktopは、WindowsとmacOSでGitを扱う、簡単で無料の方法です。desktop.github.comからダウンロードし、アカウントにログインして、リポジトリをcloneします。その後は、commit、push、pull、ブランチ、コンフリクトの解決をボタンで行えます。stash、LFS、resetには機能上の制限があり、複雑な操作はターミナルで行うのが基本です。リモートリポジトリ、push、pull、pull requestによるチーム開発は、Gitコースの中で実践的に扱っています。
よくある質問
GitHub Desktopは無料ですか?
はい、アプリは完全に無料で、オープンソースとして公開されています。有料になるのは、必要な場合にGitHub自体の有料プランを契約したときだけです。
GitHub Desktopを使うには、Gitを別途インストールする必要がありますか?
いいえ。アプリにはGitが組み込まれています。ただし、ターミナルでも作業したい場合は、お使いのシステムにGitを別途インストールしてください。
GitHub DesktopでGitLabやBitbucketを使えますか?
はい。URLタブにHTTPSのアドレスを入力すれば、リポジトリをcloneできます。pull requestの連携とアカウントでのログインはGitHubでのみ機能します。
GitHub Desktopは日本語に対応していますか?
公式の日本語インターフェースはありません。アプリは英語で表示されます。ボタンの名前は短く、Gitのコマンドに対応しているので、慣れれば分かりやすく使えます。
GitHub Desktopでファイルの変更が表示されないのはなぜですか?
多くの場合、そのファイルが <code>.gitignore</code> のルールに該当しているか、別のリポジトリのフォルダを開いています。Current repositoryメニューでパスを確認し、<code>.gitignore</code> の内容も見直してください。