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つ一つの操作で目線を移動する必要があり、操作の一貫性がなくブランチを跨いだ操作ができず使いにくいと感じます。

有料の価値があるかは、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. リポジトリが小さい限りははほぼ発生することはありません。