2026年11月1日日曜日

linux用のgitクライアント(2週間後)

AIにgitのグラフを表示できるプログラムを作ってもらった(前回)。そのまま要りそうな機能を追加していっている。思い付きで機能を追加しているのでUIがいまいち分かりにくい。

何をどうすればどうなるのか分からんので何とかしたいが、とりあえずは忘れないうちに機能を書いておく。

グラフとログ

クリックしたノードのログが出る。デフォルトではマージはグラフにならない。あくまでもブランチ間の関係を示すグラフ。

マージがどこから来ているのかは一応右ペインには表示される。でかいプロジェクトだと線だらけになってわけがわからないし幅をとる。なので遠いマージは省略して、クリックしたときだけ出るようにした。(苦肉の策)

デフォルトではマージは線になってないので、右のコミットをクリックしても左の図には対応するものがない場合がある。その場合は、図ではマージ元のブランチを示す。(ときもある。現状適当) 

上図のようにマージもグラフに出るように切り替えできるが、ある程度でかいプロジェクトだと図が異常にでかくなってgraphvizが死ぬ。仕方ないのでgraphvizが死なない程度の大きさになるように年とか日とかの単位でまとめるようにしている。(クリックしたら中身は展開される。代わりにどこかが閉じられる)

undo / redo

ブランチ削除とかリベースとかをした後、undoできる。claudeはできると言っている。ステージ状態は無視、リモートブランチもできない。ローカル変更だけundoできる。

AB操作

ブランチを2つ選んでいろいろできるようにした。が、何がどうだったか結構わからなくなる。UIと名前の付け方が悪いんだと思う。
ドラッグアンドドロップか、2つ目をctrlクリックで選べる。右クリックでも選べる。マージコミットが混ざっていると操作がうまく行かない場合が有るらしい。

AB操作/ABログ比較

ログを二つ並べてどこまで一緒か見る。遅くなるのでコミットのコメントで比較してから内容を比較するようにしていたはず。なので、中身が同じでもコメントが違ったら違うもの扱いのはず。

AB操作/A..HEADをBにリベース

 

単にBにリベースすると分岐からAまでの変更が衝突するとき用のリベース。1つくらいなら別に対話的リベースしてもいいけど、いくつもあったときに、面倒だったので入れた。filter-branchとかで書き換えて移動したいブランチが大量にできたときに使う。

AB操作/A..末端をBにリベース


 上記のようなリベースしないといけないものがたくさんあったときに面倒になって入れた。囲ってあるが青で示したリモートブランチは移動しない。filter-branchとかで書き換えて移動したいブランチが大量にできたときに使う。

AB操作/AをB側へ寄せる


 filter-branchとかでAとBでほとんど同じログなのに別系統のログになってしまった時、Bの中から共通の親を探して、そこにAを付け替える。

AB操作/AとBで同じ親を探す

上記AをB側へ寄せる一歩前の、付け替える共通の親を探すまでの処理

Bの中からAに近いものを探す

「AをB側へ寄せる」の処理をするときに、どれに寄せるか探すために入れた。探したい分岐の根本をBに指定すると、その子を探して、一番長くAと一致するものを探すはず。そこで見つけたBへ寄せる。

まとめ

結局なんだったのかというと、filter-branchを迂闊に使うとぐちゃぐちゃになってしまうので、変なものを作る羽目になるという話であった。

claudeやらgithub copilotやらcodexやらgrokやらgeminiやらperplexityやら、あらゆるAIの無料枠を2週間つぎ込んでしまった。プログラムも大きくなってきてしまい、割とすぐにトークンが尽きてしまう状態になった。これ以上大きいプログラムだと、無料では工夫しないとしんどいかもしれない。(待てばいいだけだが)

無料枠で使える度で比較すると、個人的には以下の順。使い方の問題もあると思う。

 claude >= github copilot > perplexity > grok > codex > gemini

  • claude: コーディング性能は一番いいような気がする。ほぼほぼ致命的なバグは入らないので何も確認せずいきなりpushしている。ただし割とすぐトークンが尽きる。無料だとCLIも使えないしgithubにpushもできない?が、5時間くらいで回復するので良。指示を投げておいて、トークンが尽きたら5時間後に「続ける」を押すだけの作業で割とやれる。待っている間どうしようか考えられるのも逆に良かったかもしれない。
  • github copilot: かなり無料で使わせてくれる。コーディングもまあまあ。無料でもCLIが使えたりvscodeで使えたりするので、往復のやり取りが必要そうな作業(微調整とか)はこっちでやると効率が良い。
  • codex: なかなか回復しない。1ヶ月待つ必要がある。他で使ってたのか割とすぐに切れてあまり使えてない。
  •  perplexity: コーディングはまあまあ。githubにpushしてくれる。1週間で回復するはずだと思ったが、なんか使えないような。。
  •  grok(cursor?): そこそこの量を使えて1週間で回復する。コードはあとでclaudeに直してもらわないといけなそうなレベルのようだ。githubへのpushを頼むと延々考えた挙げ句ファイルを壊す。
  • gemini:  確認せずに出してくるのでエラーが出まくる。それもあってすぐにトークンが尽きる。claudeも別枠で使えるが、すぐなくなる気がする。

金を払ってない人の感想なので、この感想に意味が有るかと言われると、無いような気はする。ただ、もしgeminiとかgrokに金を払ってたら、腹立つだろうなとは思った。