ポエム: gitはGUIでなくCUIをオススメする理由
- POSTS
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がオススメという話でした。