この記事はモバイルファクトリー Advent Calendar 2020 19日目の記事です。
こんにちは!新卒エンジニアのid:dorapon2000です。開発する方にとってGitは必須だと思いますが、どのように操作しているでしょうか。コマンドラインから、エディタの拡張機能から、GUIクライアントからなどの方法があると思います。今回は、GitKrakenというGitのGUIクライアントについて紹介して、コマンドラインとの違いについて考えたことを書きたいと思います。クライアントだけを利用する人やコマンドラインだけを利用する人が新しい気付きを得られると嬉しいです。
GitKraken
UI/UXにとても力を入れているGitのGUIクライアントです。第一印象はGitグラフが美しいですよね。私自身はこの見た目に魅了されて、個人的な開発ではGitKrakenを利用しています。見た目がきれいだと開発のやる気も起きます。
アカウントマネジメントやself-hostedのリポジトリと連携する以外のおおよその機能は無料で利用できますが、プライベートリポジトリを利用したい場合はサブスクリプションに登録する必要があります。プライベートリポジトリを利用できるようになるIndividualであれば$29/yearです。
機能
Git操作の基本的なことはGUI上からほぼできます。
git add & commit
addとcommitをします。
git add -p
addする部分の選択も行単位で可能です
git rebase -i HEAD~2
2つのコミットを1つにまとめます。
git commit --amend & rebase -iの[r]eword
コミットの編集をします。
git checkout/push/pull
ボタンを押すだけですぐ可能です。
コマンドラインと比べて楽なところ
- 差分をすぐ見れる
- ファイルや一部のコードに対するHEADに戻す操作がとても簡単
- コマンドラインでは複数のコマンドを使い分ける必要がある
git reset --hard HEAD
git checkout -p
- コマンドラインでは複数のコマンドを使い分ける必要がある
- ファイルのgit addが簡単
- コマンドラインでは
git add -p
でハンクごとに追加するか指定する必要があるがGUIではさくっとできる
- コマンドラインでは
- コミットメッセージの編集が簡単
- コマンドラインではコミットが直近であるかないかで複数のコマンドを使い分ける必要がある
- 1つ前であれば
git commit --ammend
- 2つ以上前であれば
git rebase -i
- remoteでバックログされているコミットがすぐわかる
- コマンドラインでは
git fetch
をしないとremoteの最新版とlocalでどれだけ履歴が離れているかわからない - クライアントであれば裏で定期的に
git fetch
をやってくれる
- コマンドラインでは
- mergeコミットのrevertが簡単
- コマンドラインからだと
git revert $hash -m 1
のようにオプションを付ける必要ある。このオプションを覚えなくても済みます。
- コマンドラインからだと
GitKrakenではできないこと
普段遣いで気づいたGitKrakenではできないことをあげようと思います。
- 少し複雑なgit差分だと、1行単位で
git add
ができない(git add -p
の[e]dit) - rebaseをundoできない
- ssh先のリポジトリを管理できない
少し複雑なgit差分だと、1行単位でgit addができない
コミットせずにまとめて編集をして、あとから細かくコミットしていくということが私はよくあります。変更が離れた場所であればGitKraken上でもワンクリックでその部分だけaddできるのですが、同じ場所に分離したい変更が混じっているとまとめてaddされてしまい、1行ずつaddのような細かい指定ができません。つまり、git add -p
の[e]ditのような細かいaddができません。
rebaseをundoできない
コマンドラインではgit reflog
からgit reset --hard
でもとに戻せますが、GitKrakenの現在の仕組みではそこまで柔軟に対応できないようです。
ssh先のリポジトリを管理できない
sshした先のgitリポジトリをGitKrakenでは管理できません。しょうがないかなとも思っていますが、将来の機能追加に期待しています。
GUIクライアントを使ってみて
コマンドラインだとオプションやコマンドの使い分けを覚える必要がある部分を、GUIクライアントではワンクリックで実現できてしまいます。一部の操作において手数を大きく省ける力があります。また、gitの学習敷居を下げる役割もあると思いました。
どちらからでもよいと思った操作は、checkoutやstash、push、pullのようなシンプルなコマンド群です。個人的にはコマンドラインから操作するのと手数感は変わりませんでした。
逆にGUIクライアントでは手が届かない部分として、上述したgit add -p
のeやgit reflog
などがあります。いつも使うわけではないですが、いざというときにあると嬉しいですね。
私の場合、基本的にGitKrakenから操作して、コマンドラインをちょうど触っているときは直接コマンドを叩いたりしています。
まとめ
GitKrakenの紹介を兼ねて、GUIクライアントとコマンドラインの操作感の違いについてご紹介しました。結論としてどちらにも得手不得手がありますが、個人的にはGUIクライアントのスピード感はとても好みです。
明日の記事は Yunagi_N さんです!