vivitエンジニアのGit, GitHub周りの環境を調査してみた

新卒エンジニアの氏家です。 私が現在所属しているrentalチーム(キャンプ用品レンタルサービスhinataレンタルの開発を行うチーム)では、Gitの運用にRebase運用(逆Merge運用)が採用されています。

Rebase運用とは、作業ブランチをmasterにマージする前にrebaseを行い、最新のmasterから作業ブランチが伸びている状態にすることで未然に問題を発見できたり、ブランチが複雑に入り組まずブランチの確認がしやすくなるため、チーム開発で良く取り入れられる運用方法の1つです。

調査のきっかけ

私はrentalチームにきて初めてこの運用方法を知り、こまめにrebaseするように教わりましたが、Git CLIで慣れないrebase作業を行うのはとても大変でした。 そんなとき、同じチームの先輩にGitのGUIツールを教えていただき、このrebase作業がとても簡単に行えるようになりました。 どうやら僕の知らないGit周りの便利なツールが他にもたくさんあるようです。 これからGit運用の効率を上げていくためにも、他にどのようなものがあるのか知りたいと思いました。

そこでvivitのエンジニアの方々に、Git, GitHub周りで使用しているツールやサービス、エディタの拡張機能でどのようなものを使っているか調査してみました。

調査

調査内容は「Git,GitHub周りのツールやサービス、拡張機能を使用しているかどうか」です。 使用している場合は何を使用しているか、Git CLIのみの方はなぜ他のツールを使用しないかお聞きしました。

f:id:rugk:20210604192615p:plain
Git, GitHub周りの環境調査

vivitのエンジニア10名にご回答いただいたところ、8名の方が「使用している」を選択されました。 では、どのようなツールが使用されているのか見ていきましょう。

Gitクライアントツール

Fork

回答が1番多かったのがこのGitクライアントツールのForkです。GUI操作でGitの管理ができます。 git-fork.com

私がrebaseで苦戦しているときに教えていただいたツールもこちらになります。作業ブランチにチェックアウトし、master → rebaseを選択するだけで簡単にrebaseすることができました。

コミットツリーやファイル差分などが見やすく、Git運用を快適にするためのGUIツールといえます。 お試しで利用する分には無料ですが、長期利用は有料でライセンス購入が必要です。

用途・理由
  • 差分を把握し、部分コミットできます。日本語に対応していないですが、シンプルなUIで使いやすいです。 (marietty)

Sourcetree

GitクライアントツールといえばSourcetreeも有名です。こちらもGUI操作で簡単にGitの管理を行うことができます。 www.sourcetreeapp.com

用途・理由
  • ブランチ作成・切り替え、リベース、プル、他人のブランチ差分を見る時に使用。視覚的に分かりやすい (YT)

GitHub Desktop

GitHubが提供しているGitクライアントツールのGitHub Desktopは、GitHubを運用するためのデスクトップアプリケーションです。 初めてチーム開発でGitHubを運用するという方でも、GUI操作で簡単に操作することができます。 バージョンアップを重ねるごとに使いやすさが増しているようなので、これを機に私も導入を検討しています。 desktop.github.com

用途・理由
  • 一般的なGitの操作。コマンド覚えるのが面倒なので。(murayama)

CLIクライアント、拡張機能

tig

tigはCUIリポジトリブラウザです。 様々なビューのモードがあり、コミットログやマージコミットの差分などを分かりやすく表示させることができます。 ローカルでのGit操作はtigで行うことができるので、慣れればGit CLIより直感的に操作することができそうです。 github.com

用途・理由
  • ローカルでの操作で使用。e.g. add,commit,checkout (関)

git-completion/git-prompt

ターミナルのプロンプトに常にブランチ名を表示させることができるgit-completionと、gitコマンドをtab補完できるようにするgit-promptは、Git CLIでGit操作する方には特に重宝するスクリプトのようです。 github.com

用途・理由
  • GitPrompt → fastlaneやbundlerなど、ターミナルで作業する時に自分がどこのブランチにいるかが一目で分かるようになって良い(YT)
  • GitCompletion → なんだかんだCLIでGit操作する時が多い。そういう時にとっても便利(YT)

テキストエディタ拡張機能

GitLens

ファイルの変更差分を分かりやすく表示してくれたり、コミットログを行単位で確認することができるVSCode拡張機能です。 テキストエディタVSCodeを使用されている方の多くはGitLensを追加していました。 gitlens.amod.io

用途・理由
  • コミットログや変更差分を確認するのに使っています(氏家)
  • エディタ上でファイル差分を表示(関)

GitHub Pull Requests and Issues

GitHubが提供するVSCode拡張機能です。リポジトリのPRをエディタ上で確認でき、PRの変更差分をVSCodeのDiffで表示してくれるのでコードレビューのときに重宝します。

marketplace.visualstudio.com

fugitive.vim

vimでGitの操作が行えるプラグインのfugitive.vimを利用しているエンジニアの方もいました。 vimから抜けること無くGitを操作できるので、Vimmerにとっては魅力的なプラグインのようです。(私には分かりません)

github.com

その他

ほかにもGitHub CLIやGoLandのコンフリクト解消機能、各エディタのSource Controlを利用している方もいました。 用途にあったツールを適切に使い分けてGit運用できれば、今よりも格段に作業効率が上がる予感がします。

Git CLIのみ

一方で、Gitの運用はGit CLIだけで事足りているという方もいました。 開発全般をコマンド操作で済ませたい場合や、Git CLIでの運用に慣れている場合は、わざわざ他のツールを導入する必要はないようです。

他のツールを使用しない理由

CIなど、gitコマンド使いたくなる場面があるので、Git CLI は最低限知っておきたい。あと、他のツールの使い方を覚える気がない笑(井島)

CLIに慣れていて(名嘉眞)

終わりに

今回はvivitエンジニアのGit, GitHub周りの環境について紹介しましたが、いかがだったでしょうか。

これからチーム開発でGit運用を始める方や今よりも作業効率を上げたいという方の参考になれば幸いです。