CUI vs GUI

「別にどっちつかってもgitの難しさは変わらないのでCUI使ったほうがよくない?」が私の意見です。

なぜなら、branch, push, pull, conflict, rebaseのあたりの概念理解のinterfaceに依らないからです。

変わるのはコマンド叩くかボタン押すかだけです。

じゃあなぜCUIを進めるのか

概念理解の速度が変わらないならGUIだっていいじゃないかと思うかもしれません。

CUIを進める理由は2つです

  1. 問題が発生したとき、原因の切り分けが難しい
  2. GUIクライアント特有のメタコマンドとgitのコマンドが紐付いていない場合がある

原因の切り分け?

例えば、GUI上でbranchをpushをしてエラーが発生した場合、原因は何でしょうか?

  1. GUI上で設定が漏れている?
  2. 単純にremoteに今のcommitよりも進んだbranchが既にpush済なのかも?

CUI上でエラーが発生した場合、疑う箇所はgitのエラーだけです。GUI特有の問題かも?という懸念を捨てられます。

またGUI特有の問題は以下の理由により検索性が高くないです。

GUI特有のメタコマンド?

revert という単語の意味は もとに戻す という意味です。

(これは一部想像も交じるし、そんなGUIクライアントは無いと思いますが、)もしもGUI上に revert stage というボタンがあった場合、「現在のstageにある変更をHEADと同一にする」という意味かもしれません( git reset . && git checkout . に相当)

そして、gitには revert というコマンドがありますが、これは「あるcommitの打ち消しのcommitを作成する」というコマンドです。

GUI上でやっていた revert stagegit revert パッと見は似ていますが、動作はまるで違います。

このように、GUIではボタンにかかれている動作が、gitのコマンドそのものになっていない場合があります。

GUIでラップされてしまったボタンを覚えるよりも、CUIでgitのコマンドを覚えるほうがのちのち役に立ちますし、検索性も高いです。

結論

裏側でどんなコマンド走ってるのか、そのコマンドの意味を理解できている、調べればわかる人はGUIでもいいと思います。

最初に言ったとおりgitの難しさはCUIだろうがGUIだろうが変わらないので、それならgitそのものを学べるCUIがオススメという話でした。