tech.guitarrapc.cóm

Technical updates

Git GUIクライアントと Fork

GitのGUIクライアント、いろんなツールがあってそれぞれ使いやすさがあります。

普段私は、GitKrakenをメインにしていますが、サイズの大きなリポジトリではForkを利用しています。 しばらくForkをメイン気味に使っていた中で、私がForkに感じた良さと苦手なことをメモしておきます。

tl;dr;

Git GUIクライアント、まだまだ全然決定版がないですね。

  • GitHub.comやGHE、GitLabなど複数のVCSを同時に扱うなら、GitKraken一択
  • 現在のブランチにいつつ、別のブランチの操作、ツリーのハンドリングなどGitの使い勝手はGitKrakenが最高
  • SourceTree使ってたならForkがいいでしょう。すべての動作が高速な上位互換
  • あるいは10GB超えるようなリポジトリもForkは高速で使いやすい
  • GitKrakenでGit操作が遅いと感じるならForkはgit操作が高速でUIもロックされず快適。一方で、Forkのgit操作、UIコンセプトはGitKrakenより手間がかかるのでストレス1
クライアント 価格 認証 複数VCS対応 備考
Fork $49.99 (買い切り) OAuth × 試用は無料
GitKraken $4.95 user/month (サブスク) OAuth OSS利用は無料
SourceTree 無料 PAT/SSH ×

自分のGit利用ケース

私がGitで利用するのは、主にコードのコミット (UnityやC#、Go、React他)、並びにGit LFSです。

コミット頻度は高く、ブランチを切ったり、マージ操作、ファイルごとの差分確認、stageのフラット/ツリーでの確認、コンフリクト解消を重視しています。

Git GUI クライアントについて

Forkだけ評価しても一方的なので、自分が使っているGitKrakenも評価します。

Fork

Git-fork.com

Forkは、買い切り $49.99 (One-time purchase) のGitクライアントです。2

OAuth認証が必要なので、Organizationで使うにはForkをOAuth許可する必要があります。

高速なGit操作が特徴で、例えば10GB越えのリポジトリにて「Unityで3DモデルやLFSを使う」ケースでも、checkout、diff、stage、commit、push、pullのいずれも重いと感じることなく操作ができます。

GitKraken

www.gitkraken.com

GitKrakenは、サブスクリプション購入 $4.95 per user/month (paid annually) のGitクライアントです。3

OAuth認証が必要なので、Organizationで使うにはGitKrakenをOAuth許可する必要があります。

個人的に最も好きなGUI Gitクライアントです。

ツリーの見やすさ、マージコンフリクトの解消のしやすさ、いちいちブランチを切り替えずGit操作ができる快適さは他の追随を許しません。また、複数のVCSと接続できてプロファイル概念があるので、1つですべてができる万能さです。

Git操作が重くなりがちで、1つの操作中はほかの操作がロックされるのは欠点です。4 いろいろGUI Gitを使ってきていますが、最も操作しやすく、UIとツリーが洗練されていると感じます。

Fork と SourceTreeの比較

Forkの操作やUIはSourceTreeと非常に似通っているので、SourceTreeを使っていたら違和感なく移行できるでしょう。 また、SourceTreeのストレスが解消されているので気持ちいいぐらい使いやすいです。

有料なだけの価値があります。

Fork の良い点

  • どの操作でも固まらない
  • ファイルdiff違和感はなく高速
  • 操作UIも違和感ほぼなし
  • push/pullが爆速
  • checkoutが爆速
  • treeがSourceTreeより見やすい

Fork の懸念点

  • 有料
  • OAuth認証が必要

特筆点

特筆することはないです。 SourceTree使っているなら使いやすくて軽い、でも有料かー。という印象に落ち着きます。

ForkとGitKrakenの比較

ForkのGit処理は、GitKrakenに比べて非常に高速なので、GitKrakenで重いと感じているならForkは快適に感じるでしょう。

一方で、UIが違うのはネックで、GitKrakenのUIに慣れているとForkは1つ1つの操作で目線を移動する必要があり、操作の一貫性がなくブランチを跨いだ操作ができず使いにくいと感じます。

有料の価値があるかは、GitKrakenが重いと感じるか次第。

Fork の良い点

  • push/pullが爆速
  • checkoutが爆速
  • リポジトリごとの操作が非同期でロックされないので快適
  • 素直なGit。hooksなど妙な挙動がない
  • カスタムコマンドができる。(私はいらないけど)

Fork の懸念点

  • diffをファイルの下に出すのは、複数ファイルのdiffを順にみていくのがつらくごみといわざるをえない
  • 操作していて、視点があっちこっち見ないといけない
  • 画面内でタブを使っているので、一覧しても見えないものがある
  • branch作成、ammendなど些細な操作が厳しい
  • treeが厳しい、見やすくはない
  • repo初期化はセルフサービス
  • repo追加もセルフサービス。検索などない
  • Conflict解消がやりにくすぎる、Forkでやるの無理では
  • SSH鍵生成などもセルフサービス
  • PRはWebでどうぞスタイル
  • ライセンス管理は原始的

特筆点

GitKrakenとはコンセプトの違いはありますが、油と水ぐらい使い勝手が違います。

Forkは操作の視点移動が多く、コミット操作中にツリーが隠れるなど、Forkは触って使いにくく感じます。

ツリーは好みがあります。 個人的にForkのツリーはよくある表示ですが、コミットメッセージに食い込んでて、普段見せたいもの(head/changeの有無/コミット一覧)と、必要に応じて見たいもの(ブランチ名、commit user、commit id、commit日付) の区別がつきにくく見づらいです。

上 Fork の ツリー、下 GitKraken の ツリー

Fork の欠点と対処

Fork の縦ペインで視点移動は減らせるのか

ForkがGitKrakenのように操作ごとの視点の動きを考慮したUIになれば好ましいですが、そんな未来は来ないでしょう。 ということで、ペイン配置で何とかできないでしょうか。

Forkを水平、縦でペイン表示変更してみて視点移動を減らせるか試してみたので、Twitterにあげたのをぺたり。 結果は、縦なら少しは良くなるけど、diffがどうしようもなく使いにくい。


  1. GitKrakenがForkの早さをもって、ファイルロックが起こらなければ使うべきではない言葉なので修正してくださいといえるんですがそんなものはない
  2. 試用のみ無料ですが、無料版は現在存在しないと明言されています。その上の発言と一貫性取れてない気がするけど。有料の価値はあるいい製品です。
  3. 無料版もあり、OSSのみ + 接続できるVCSがGitHub.comというだったり制約があります。
  4. リポジトリが小さい限りははほぼ発生することはありません。