セマンティック差分
単なる名前の変更は、行単位の差分ではファイル 1 つがまるごと削除され、まるごと追加 されたように見えます。技術的には正しく、そして何の役にも立ちません。
Gitcito は各ファイルの差分の上に 何が変わったか の帯を表示します。ファイルの 新旧両方のバージョンを tree-sitter で解析し — 正規表現ではなく、本物の構文木です — 宣言どうしを突き合わせます。

| 判定 | 例 |
|---|---|
| リネーム | startServer → bootServer |
| シグネチャ | open(path) → open(path, mode) |
| 追加 / 削除 | 新しい関数、消えた関数 |
| 移動 | 同じコードが 40 行下へ |
| 変更 | 名前もシグネチャも同じで、中身が違う |
名前の変更とシグネチャの変更が先に並びます。レビュアーが見落としてはいけないのは そこだからです。行をクリックすると差分内のそのシンボルへ飛びます。
解析できるもの
TypeScript、TSX、JavaScript、Python、Go、Rust、Java、C、C++、C#、Ruby、PHP、 Swift、Kotlin、Scala、Lua、Bash、Zig。
文法を持たない言語のファイルは、ふつうの行単位の差分のままです。帯そのものが現れま せん。400 KB を超えるファイルも同じです。
正直な限界
- 中身も変わった名前の変更は、リネームとして報告した うえで その旨を伝えます。
- たまたま似ているだけの 1 行関数どうしは組にされ ません。あるサイズを下回ると 一致はほぼ完全でなければならず、架空のリネームではなく、素直な削除 + 追加になり ます。
- 上のほうが増えたせいで数行ずれただけのシンボルは「移動」として報告しません。 本当の移動が埋もれてしまうからです。
関連項目: 差分ビューア · 前回から何が変わったか