SSブログ

gitが慣れない [プログラミング]

gitのコマンドが多すぎて覚えきれずに、あまり何度もやらないものは毎回ググる。さすがに何度もやるコマンドは覚えているけど、それだって細かい違いがあったりするので、確認のためにメモ書きやチートコピペテキストを見て使わないと心もとない。覚えられないのも老化現象かと思うが、主要な操作だけでもかなりあるので覚えるのはしんどい。


gitだとバージョンとか機能差によってフォルダ分けしたりしなくても、ソース管理できるところがいいんだけど、これをやったら元に戻れないとか、戻そうにも調べないときちんと戻らないとかあったりして面倒。調べて片が付くのはまだいいんだけど、オペミスとか自分の記述ミスとかどうしてもだめな局面が、gitの操作によって決定づけられてしまうこともある。その操作が不可逆的だと教えてくれるわけもなく、わりとたくさんの落とし穴があると思う。

自分があるブランチを編集して、コミットせずに他のブランチに気にしないで移動してしまうと、今までやっていた変更がチェックアウト先にマージされてしまうことがある。エラーになるときは気づくからいいんだけど、強制マージされたチェックアウト先の処置が面倒。というか、マージしたくてチェックアウトするっていう目的で使うってことそんなにない気がするんだけど、どういう了見でそういう仕様にしたのかがよくわからない。

あとリモートをマージするときにフェッチするけど、大体はマージするときにはフェッチしないといけないから自動的にしてもらってもいい気はする。そういうところは手でやらせるのに、先のチェックアウト時の自動マージとかおせっかいだとかしか思えない。どうせなら別のブランチにチェックアウトするときに、移動するけどとりあえずコミットする?って聞いてくれた方がまだ親切なような気がする。

あぁgit pullにすればいいのか…。fetch + mergeだからその通りだよなぁ。pullはリモートリポジトリのブランチを全部引っこ抜いてくるイメージがあったから、あんまりpullは使わなかったんだよなぁ。全部持ってくるのはcloneとかgit checkout -bとかでやる感じでしたね。


多くのコマンドラインアプリがフールプルーフの概念があまりないのは、プログラマの怠慢だろうけどプログラマは基本的に怠惰であるのがデフォルトだしねw。まだgitはいい方だけどコマンドラインアプリは、あまり操作にとやかく言わずノーガード、というかワーニングとかなしで処理をしてしまうことが多いですよね。処理が止まるときはエラーとかが出た時だけで、その時もそれほど案内がいいとは言えないメッセージを出すだけですもんね。

パイプでつないで何とかという概念では途中でインタラクティブに止まるという前提ではないのはわかるけど、一つのツールの中で完結しがちなアプリだとかはもうちょっと考えてほしい気はする。いろいろやっているのに寡黙すぎるアプリが多すぎるw。


gitはOS(ディストリビューション)に標準で付いてくるユーザーランドのツールよりか、オレオレルール的なところがあるから、まだ不可解なメッセージも少ないんだけど、それでもいつもと違うことをしたときに訳のわからないエラーが出たりして苦労する。

gitで一元管理というわけだけど(分散リポジトリという意味ではなくて、手元に各バージョンがあるという意味)、何かが起こると取り返しのつかないこともあるから、たまにgitで制御されているフォルダごとコピーして不測の事態に備えることがある。本末転倒的だけど、バックアップを多重にしているようなものだから、それはそれで意味はある。

ただいきなりロールバックすると、リモートリポジトリとの齟齬ができてわけわかんないエラーが出てきて困ったりすることもあるんだよね。pushしようにもできないとか。メッセージの英語読んでもいまいち理解ができないこともあるから、ググって解決するんだけどもマイナー案件ってググって先頭の方にはまず出てこないんすよね。

タグ:Git
コメント(0) 
共通テーマ:パソコン・インターネット

コメント 0