GitHub Desktopのメリット・デメリット

はじめに

この記事は、「Git Advent Calendar 2015」の17日目の記事です。 正直Gitには詳しくないので、日頃お世話になっている「GitHub Desktop」について書きます。

GitHub Desktopとは

f:id:gurimmer:20151217013933p:plain

GitHubが提供しているGitクライアントアプリです。元々「GitHub for Mac」「GitHub for Windows」という名前のアプリでしたが、それらを統合しよりシンプルにバージョンアップさせたアプリが「GitHub Desktop」です。

Windows用とMac用のアプリが下記サイトで配布されています。

desktop.github.com

以前のアプリより「GitHub-Flow」を意識した作りになりました。

GitHub-Flowとは

gitとGitHubをつかった開発フローのことです。こちらの投稿がとてもわかりやすかったです。 qiita.com

GitHub Desktopの機能

上にも書きましたが、「GitHub Desktop」は、このGitHub-Flow*1を実施しやすいアプリとして開発されています。

そのため

  • masterブランチが主役
  • どんな派生ブランチでもマージ元はmasterブランチがデフォルト
  • どんな派生ブランチでもPull Request先はmasterブランチがデフォルト

となっています。

メリット

1. GitHub-Flowがとても捗る

これにつきます。masterからブランチを作成し、コミット→push→Pull Request作成がとてもスムーズです。またmasterブランチと現在の作業ブランチのヒストリーが常にグラフ表示されているため、masterブランチとの差分がとてもわかりやすいです。

f:id:gurimmer:20151217005023p:plain

2. シンプル

Gitはいろんなコマンドがありますが、Gitコマンドをほとんど意識させずにバージョン管理できるツールになっています。 とても潔くて素晴らしいです。

3. 親切設計

変更ファイル一覧からチェックをつけて後はcommitボタンを押すだけで、git add indexなどせずにgit commitしてくれます。 また、ブランチ単位(おそらくgit checkoutのタイミング)でgit stashしてくれるあたりも直感的かつ親切に作られているなと感じます。

例えば、あるブランチで作業していて、masterブランチのファイルを見たいとなった場合にGitHub Desktopでブランチを切り替えると自動的に編集中のファイルを退避してくれます。またブランチを戻せば退避していた編集中のファイルを戻してくれます。

f:id:gurimmer:20151217010630p:plain

デメリット

コレはあくまで個人的な意見ですが

  • 複数のブランチをデプロイするような開発フローの場合使いにくい
    • developブランチにPull Requestするなどのフローはちょっとやりにくい
  • rebaseとかresetができない
  • 空コミットができない*2
    • WIPなPull Requestをすぐ作れない
  • ブランチ一覧がみにくい(GitHub for Macの頃のブランチ一覧がよかった)
  • ブランチを消しにくい(メニュー→Branch→Deleteを選ばないと消せない)
    • 「誤って消さないように」の配慮なのかもしれない...

色々書きましたが、

  • デプロイするのはmasterブランチだけ
  • 並行した開発がない

のであればとても使いやすいアプリだと思います。

まとめ

GitHubが提供しているGitクライアントアプリ「GitHub Desktop」について書きました。 無駄を極力省いたとてもシンプルなアプリになっています。エンジニア目線から見ると、機能を削ぎ落とすのはとても難しいので、とても素晴らしいアプリだなと思います。 みなさまぜひ使ってみてください!

*1:サイトにはGitHub workflowと書いてある

*2:空コミットができるgitクライアントあるのかな...

photo credit: Café au lait via photopin (license)