まめ - たんたんめん

備忘録 C# / WPF 多め

Git Fork でストレスフリーな gitライフを Git GUI Fork の紹介

こんばんは。皆さん git クライアント何を使っていますか? 私は1年ほど前から Forkを使っています。 Mac版とWindows版があってDan Pristupovさん(Mac 版 ,Swift, Cocoa)と Tanya Pristupovaさん(Windows .NET , WPF)によって開発されています。
今日はWindows版の紹介です。(Mac版は使ったことがないのでわかりません。)

git-fork.com

Forkに乗り換えた経緯

私がForkを使い始めた経緯ですが, もともとSourceTreeを使ってて、その時は大規模なプロジェクトを開くとUIが固まったりすることがとても多くストレスを感じていました。
そこで、次に動作が軽いと評判だったGitExtensionsに乗り換えました。GitExtensionsはかなり気に入っていて特に困っていたという訳ではなかったです。
しかし、ある時に職場のslackでForkを知る機会があり興味本位で試してみたらこれがドハマりといった感じでForkの虜になりました。 この記事ではForkに乗り換えてよかった事や便利な機能を紹介しようと思います。

f:id:at12k313:20201218205558p:plain

画面

コミット画面、SourceTreeと逆ですが、私はGitExtensionsに慣れているので特に問題ありませんでした。 人によっては気になるかも。
f:id:at12k313:20201218211833p:plain

Fork最高!!

Forkを語る上で欠かせないのがまず1番にUIのレスポンスです。
動作が高速で、 全然もっさりしないです。 また、時間のかかるような処理は全てバックグラウンドで動いてくれるのでUIが止まらず、複数のリポジトリをまとめてプルしたりなど並列に作業ができたりします。
ブランチ切り替えやタブ切り替えなどもストレスなく行えます。
また、UIが非常に丁寧に作られておりわかりやすいので、ドキュメント等を読まずとも直感的に使えます。 ( これは私がGitGUIツールに慣れていたからかもですが...)
次の項目でForkの機能を紹介しますが、全部の機能を紹介することは難しいので使っていて便利に感じてる機能を7つピックアップして紹介します!

1. インタラクションリベース

これが一番Forkを導入してよかったことかもしれません。
プロジェクト運用によりますが、プリリクエストを出す段階でコミットをまとめたり、コメントを修正したりしたいことがあると思います。
コマンド等を駆使すればgitコマンドで可能ですが、複雑な操作が必要で大変です。
私の知る限りGUIではこういう機能のサポートが少ないような??
Forkでは以下のようにコミットを修正できます。
f:id:at12k313:20201218224439g:plain

2. 部分ステージ & 部分取り消し

行単位で変更をステージや変更の取り消しをすることができます。
コミット画面で不要な変更を見つけた場合や一部だけコミットしたい場合にとても便利です!
f:id:at12k313:20201218221305g:plain

3. 自動スタッシュ

ブランチ切り替え時にコミットしていない変更がある場合、チェックアウト時に自動的にStash&Applyしてくれます。
f:id:at12k313:20201218225210p:plain

しかもこの時に、コンフリクトしたりしてうまくいかず、やり直したい場合なども Stashが自動的に積まれているので気兼ねなくRevertできます!
f:id:at12k313:20201218225308p:plain

4. ブランチフィルター

PRなどから目的のブランチを簡単に検索できます。大規模なプロジェクトなどでは特に有用です。
f:id:at12k313:20201218215019p:plain

5. マルチリポジトリ管理

私は結構複数のリポジトリにまたがって作業するのですが、簡単に切り替えられるのでとても気に入ってます。
しかもUIが固まらないのでメインのブランチでチェックアウト切り替え中に別のリポジトリで作業なんてこともできます。
f:id:at12k313:20201218211359g:plain

6. カスタムコマンド

標準のUIにはない機能やプロジェクト固有の機能を追加しています。
f:id:at12k313:20201218215427p:plain
私は プルリクエストをブラウザで開くコマンドや、パッチ作成コマンド等を作って使っています。

7. 自動フェッチ

Forkは開いておくだけでタイムスケジュールで自動的にフェッチができます。
コミットする前にあ、リモート進んでじゃん。みたいなことになる前に気づけたり。
(デフォルトでは15分単位でフェッチされます。 )
f:id:at12k313:20201218221724p:plain

最後に

他にもたくさんの便利な機能があります!
- MergeTool , DiffToolカスタマイズ
- statistics(開発者のコミット等の統計表示)
- 画像のプレビュー・diff
- Branchの折り畳み

そして、最後にしれっと書いておきますが Forkは有料です! 買い切り$49.99 です。
1アカウントで3PCまで利用できます。

お金は払わなくてもダウンロード自体できて制限無く利用できます。
気に入ったら買いましょう!(私は購入済みです)

その他 問題

  1. git worktreehへの対応
    git worktreeがうまく動かないことがありました。(ほとんど動作してるのですが、たまにUIに反映されなかったり、タブを消して再表示すると治ったり)
    不具合なのかな?と思いメールを送ってみたところ以下の回答があり、現在は非サポートで今後対応していくとのことでした。

    I guess you use worktrees and Fork currently doesn't support them. This is in our todo list though.

  2. 日本語UIは無い 現在Forkは日本語に対応していません。私は英語はからっきしですが、エンジニア用語的な英文はある程度慣れているので気になりませんが、英語のツールはちょっと...という人は難しいかもしれません。