Github DesktopとSourcetreeの違いについて
アドベントカレンダー、18日目の記事です。
なにかの Advent Calendar 2016 - Adventar
Gitでのバージョン管理をより行いやすくするために作られたGUIがいくつか存在します。
このうち、ウェブサービスのGitHubと連携をとれるもので著名なものに SourceTree と GitHub Desktop があります。
SourceTree (https://ja.atlassian.com/software/sourcetree)
GitHubDesktop (https://desktop.github.com/)
双方のGUIがどう違うのか、抽象的ながら比較してみます。
コミット
まずはコミットですが、下の画像はそれぞれSourceTreeとGitHub Desktopの画面をスクショで記録したものです。(画像に一部化加工をしてあります)
いずれも、左枠にプロジェクト名、中心枠に変化のあったファイルの一覧、右図にファイルの変更箇所が表示されています。しかし、ここだけでも両者には違いがあります。GitHub Desktopではコミットするファイルをチェックボックスで選択しますが、SourceTreeではIndexという枠に対象ファイルをステージ(あげて)選択します。
また、SourceTreeではコミットをする場合、タブの「コミット」を、GitHub Desktopでは画面上部の「Changes」をクリックすれば行うことができます。
プッシュ
プッシュの違いについて紹介します。
SorceTreeでは、赤枠の「プッシュ」を押すことでリモートリポジトリにプッシュできます。そのままですね。問題はGitHub Desktopですが、こちらでは「プッシュ」の表記がなく、代わりに「Publish」もしくは「Sync」という右上のボタンでプッシュすることができます。この「Sync」、後述の「プル」を同時に行ってくれるという便利なボタンです。ちなみに一度「Publish」ると以後そのブランチでは「Sync」の表記になるようです。
フェッチ/プル
フェッチ・プルの違いについて紹介します。ここでは機能面で両者に大きな違いがあります。
まずはSourceTreeですが、図の赤枠で囲まれた部分で「フェッチ」もしくは「プル」を行います。画像では「フェッチ」を選んだ状態を表していますが、リモートリポジトリに変化があったことが示されています。
一方、GitHub Desktopでは右上の「Sync」を押すことでリモートリポジトリの状態とローカルリポジトリを同期させることができます。ここで注意点ですが、GitHub DesktopにはSourceTreeやGitのように「フェッチ」がなく、上記の通り「Sync」で「プル」を行うことになります。
まとめ
SourceTreeとGitHub Desktopの比較を簡単にまとめてみます。
SourceTreeと比較して、GitHub DesktopではGitの基本的な操作(コミット、プッシュ、プル)を行うことができ、表示される情報も簡素なのでとっつきやすいと思われます。しかし、本当に最低限の項目だけ用意されているため、例えばフェッチとプルを使い分けたい場合などの操作には別のGUIを用いるかコマンドで行う必要があります。また、Gitコマンドの表記とボタンの表記が違うため、所望する操作について調べる際には苦労するかもしれません。
結論としては、小規模であったり重要でない制作物のプロジェクトには、GitHub Desktopを使っても支障はないと思われます。逆に、複数人による制作物のバージョン管理にはSourceTreeのほうが向いていると考えられます。
もっと言ってしまえば、自分たちの好きな形でやればいいんじゃないでしょうか。