SourcetreeユーザーがGitHub Desktopを使ってみた話

はじめに

こんにちは!入社3年目の周です。
みなさんはGitをGUIで操作できるクライアントツールを使ってますか?SourcetreeとGitHub Desktopが人気だと思いますが、私は普段の仕事でSourcetreeを使っているので、GitHub Desktopについてはあまりよく知りませんでした。アトラスではホワイトリストに登録されているツールであれば自由にインストールして使えるため、GitHub DesktopとSourcetreeを比較してみることにしました。
今回は、Gitでよく使う以下の機能について比較しました。

  • クローン
  • プル&フェッチ
  • ブランチ操作
  • コミット&プッシュ
  • コンフリクト解決

環境

  • macOS Big Sur
  • Sourcetree 4.1.2
  • GitHub Desktop 2.9.14

クローン

クローンとはリモートリポジトリをローカルリポジトリとして手元のマシンへコピーする操作です。

Sourcetree

SourcetreeでGitHubのアカウントとパスワードを設定すると、下記画像のようにリモートリポジトリ一覧が表示されます。その右のクローンリンクを押すと簡単にローカルリポジトリとしてコピーできます。
Sourcetreeクローン画面

GitHub Desktop

GitHub Desktopでは、あらかじめ連携させておいたGitのアカウント情報を利用して、クローンできるリポジトリ一覧が自動で取得・表示されます。リポジトリを選択して右下のCloneボタンを押すとローカルにコピーします。
GitHub Desktopクローン画面
両方とも簡単にローカルにコピーできますが、Sourcetreeは初期設定でアカウントとパスワードの再設定が必要です。GitHub Desktopは連携させておいたGitのアカウント情報を利用してダウンロードすることができます。

プル&フェッチ

プルとフェッチはリモートリポジトリの内容を取得して、ローカルリポジトリに反映する操作です。

Sourcetree

Sourcetreeではリポジトリの画面にプルフェッチの二つボタンがあります。画面の左ペインのブランチ一覧から対象のブランチを選択し、上のメニューバーにあるフェッチまたはプルボタンをクリックするとリモートの変更をローカルに反映できます。
Sourcetreeプル&フェッチ画面

GitHub Desktop

GitHub DesktopはSourcetreeと違って、プルとフェッチボタンが一つになっているFetch originというボタンがあります。
GitHub Desktopフェッチ画面
プル&フェッチについては、両方とも簡単にできますが、Sourcetreeは他のリポジトリをフェッチする場合に一回リポジトリ一覧画面に戻って、また他のリポジトリを選択する必要があります。GitHub DesktopならCurrent Respositoryから選択できます。
GitHub Desktopリポジトリ一覧画面

ブランチ作成

ブランチ作成は1つのプロジェクトから分岐させることにより、プロジェクト本体に影響を与えずに新しい作業用の履歴を作るという操作です。

Sourcetree

Sourcetreeではブランチを新規作成するときに上側のツールバーにあるブランチをクリックして、出てきた新規ブランチダイアログにブランチ名を入力します。
Sourcetreeブランチ作成画面

GitHub Desktop

GitHub Desktopも上側にあるBranchをクリックして、出てきたCreate a Branchダイアログにブランチ名を入力します。
GitHub Desktopブランチ作成画面

ブランチ切り替え

ブランチ切り替えとは今作業しているブランチから退出して、新たに他のブランチで作業をしたい場合の操作です。

Sourcetree

Sourcetreeでは左側のサイドメニューのリモート下にあるブランチ名をクリックすると、ブランチが切り替わります。
Sourcetreeブランチ切り替え画面

GitHub Desktop

GitHub Desktopでは二つ方法があります。
一つ目はSourcetreeと同じようにブランチ名から切り替える方法です。Current Branchをクリックするとブランチの一覧が出てきます。その中にあるブランチ名をクリックするとブランチが切り替わります。
GitHub Desktopブランチ切り替え画面
二つ目は作成したプルリクから切り替える方法です。Current Branchをクリックして、出てきたダイアログの上のPull Requestsを押すと、作成したプルリク一覧が出てきます。個人的にブランチ名から探すより便利だと思います。
GitHub Desktopプルリク一覧画面

コミット&プッシュ

コミットとはファイルなどの編集作業をローカルリポジトリに記録する操作です。
プッシュとはローカルリポジトリに記録した変更をリモートリポジトリに反映する操作です。

Sourcetree

Sourcetreeではファイルを更新すると、ファイルステータスに更新されたファイル一覧が表示されます。 中央ペインのファイル一覧にあるチェックボックスをクリックするとすべてのファイルを、個別にファイルを選択すればコミットしたいファイルだけをインデックスに追加することができます。コミットしてから上側にあるプッシュボタンを押したら、リモートブランチにプッシュできます。
Sourcetreeコミット&プッシュ画面

GitHub Desktop

GitHub Desktopでは、コミットまではSourcetreeと同じように、更新されたファイル一覧からファイルを選択してインデックスに追加しますが、プッシュ操作するボタンはコミットするまでツールバーには表示されません。コミットするとFetch originの部分がPublish branchに変わり、そのボタンを押すとプッシュできます。
Sourcetreeコミット&プッシュ画面
GitHub Desktopプッシュ画面

コンフリクト解決

コンフリクトは簡単に言うと、ファイル上で「自分の作業」と「他人の作業」が重複してしまった状態のことです。
解決する方法としては主に三つの方法があります。

  • 相手の変更で解決する
  • 自分の変更で解決する
  • 手動で解決する

「相手の変更で解決する」は、自分の変更内容を破棄して他人の変更内容を採用することです。
「自分の変更で解決する」は、他人の変更内容を破棄して自分の変更内容を採用することです。
「手動で解決する」は、コンフリクトが発生した部分に<<<<<HEAD=====>>>>>>といった表示が出るため、それを参照しながら解決することです。

Sourcetree

Sourcetreeでは競合したファイルを右クリックすると解決のための操作方法が表示されます。
Sourcetreeコンフリクト解決画面

GitHub Desktop

GitHub Desktopではコンフリクトが発生した場合に、下記画像のようなダイアログが表示されます。Open in Visual Studio Codeのプルダウンをクリックすると、操作方法が表示されます。
GitHub Desktopコンフリクト解決画面

まとめ

今回はGitをGUIで操作できるクライアントツールとして、SourceTreeとGitHub Desktopを比較しました。
SourcetreeとGitHub Desktopの両方ともプロダクトバージョン管理の機能が用意されていますが、私は業務の中で他人のブランチを見ることがよくあるので、GitHub Desktopの方が便利だと思いました。
Sourcetreeの方はいろいろな機能を画面上から見ることができ、日本語化することもできるので、初心者におすすめです。
GitHub Desktopの方は英語の画面しかなく、アイコンも少ないので、Gitの使い方に慣れてから使うと操作しやすいかと思います。
この記事を参考に、いろいろなGitクライアントを試してみて頂けたら幸いです!