CUI vs GUI
「別にどっちつかってもgitの難しさは変わらないのでCUI使ったほうがよくない?」が私の意見です。
なぜなら、branch, push, pull, conflict, rebaseのあたりの概念理解のinterfaceに依らないからです。
変わるのはコマンド叩くかボタン押すかだけです。
じゃあなぜCUIを進めるのか
概念理解の速度が変わらないならGUIだっていいじゃないかと思うかもしれません。
CUIを進める理由は2つです
- 問題が発生したとき、原因の切り分けが難しい
- GUIクライアント特有のメタコマンドとgitのコマンドが紐付いていない場合がある
原因の切り分け?
例えば、GUI上でbranchをpushをしてエラーが発生した場合、原因は何でしょうか?
- GUI上で設定が漏れている?
- 単純に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 stage
と git revert
パッと見は似ていますが、動作はまるで違います。
このように、GUIではボタンにかかれている動作が、gitのコマンドそのものになっていない場合があります。
GUIでラップされてしまったボタンを覚えるよりも、CUIでgitのコマンドを覚えるほうがのちのち役に立ちますし、検索性も高いです。
結論
裏側でどんなコマンド走ってるのか、そのコマンドの意味を理解できている、調べればわかる人はGUIでもいいと思います。
最初に言ったとおりgitの難しさはCUIだろうがGUIだろうが変わらないので、それならgitそのものを学べるCUIがオススメという話でした。