──「心をgitで管理する世界」の物語で、自分がみているのはfetchした時点の友人
〈ショートストーリー〉
田中とは、それからもたまに連絡を取った。
会えば、昔の話だ。文化祭、屋上、担任のあだ名。高校のあたりのcommitを、何度もcheckoutしては転がして遊ぶ。そこだけは二人とも、すらすら出てくる。
新しい話は、しない。
お互いの「今」を少しだけ話して、そしてどちらからともなく、また昔へ戻る。新しいcommitは、一つもpushされないまま流れていく。会えば昔、会えば昔。私たちの友情は、いつのまにか高3のタグみたいになっていた。会いに行ける。なつかしい。でも、新しい一日は、もう書き足せない。
一度、夜遅くに田中からいつもより長い連絡が来た。仕事のことで、何かうまくいっていないようだった。昔の田中になら、電話して朝まで聞いていた。
私は、画面をしばらく見て ── 結局、スタンプを一つ送った。気のきいた言葉が出てこなかった。疲れてもいた。明日、ちゃんと返そう、と思った。
明日は来た。返事はしなかった。彼のその夜は、私の中にfetchされないまま流れていった。
たぶん、向こうにもこういう夜があったのだろう。私が送らなかった何かを、向こうもどこかで待っていたのかもしれない。
別れぎわ、いつも同じことを言い合う。
「お前、変わらないなあ」
ずっと、ほめ言葉だと思っていた。
ある日、気づいた。あれは、約束だったのだ。
── お互い、fetchしないでおこうな。
更新しないでおこう。お前は、俺の中の、あの頃のお前のままでいてくれ。俺も、お前の中で、そうしている。fetchしてしまえば、なつかしい十八歳は、今の田中に上書きされる。それはたぶん、本物の田中だ。でも、二人で笑える田中ではなくなる。
だから私たちは、fetchしない。古いまま、会う。古いまま、笑う。
それは、優しさのような気もした。臆病の、別の名前のような気もした。
会うほどに、けれど、田中は遠くなった。なつかしさのぶんだけ、今の田中から離れていく。
楽しかった。会うたび、確かに楽しかった。
ただ、その楽しさは、二十年前の二人の楽しさだった。
〈技術ノート〉── fetchしていない
ノートは答え合わせではない。物語が嘘をついた、ちょうどその場所の地図である。
物語が嘘をついた場所
「お前、変わらないなあ」── この実感が、嘘だ。
田中は、変わっている。変わっていないのは、私の中の田中だ。正確にはorigin/田中 ── 私が最後にfetchした時点の、彼のキャッシュ。それが古いまま固まっている。だから私には本当に、彼が変わらなく見える。彼の側に異常があるのではない。私が取り寄せていないだけだ。
remote-tracking branch(origin/田中のような枝)は、相手の現在ではない。私のリポジトリの中に置かれた、相手の複製の、しかも古い版だ。これはfetchしたときにしか動かない。サボれば、何年でも止まる。
そしてもう一つ。「fetchすれば、彼が更新される」も、少しずれている。
-
fetch ── 相手の新しいcommitを取り寄せ、
origin/田中を最新に進める。彼の近況を読めるようにはなる。だが、私自身(私の枝)は、まだ何も変わらない。 -
pull ──
fetchした上で、それを自分の枝にmergeする。相手の二十年を、自分の人生に取り込んで初めて、こちらの側が動く。
田中の近況を「知る」だけなら、fetchで足りる。彼を自分ごととして引き受けるのが、pull。私たちは、その手前 ── 取り寄せることすら、しないと約束した。
正しい名前
| 物語の言葉 | gitの正名 |
|---|---|
| 私の中の、十八歳のままの田中 |
origin/田中(remote-tracking branch)=最後にfetchした時点の古いキャッシュ。相手の現在ではない |
| 取り寄せる | fetch=相手の新しいcommitを取り寄せ、キャッシュを進める(自分の枝は変わらない) |
| 自分ごとにする | pull=fetch+merge。取り寄せた上で、自分に統合する |
| 古いまま、会い続ける | 未fetchの常態=取り寄せないから、相手がpush済みでも手元のキャッシュは古いまま |
要点
-
「変わらない」のは相手ではなく、自分のキャッシュ。
origin/相手はfetchでしか動かない。サボった年数ぶん、ズレる。 - fetchは読むだけ、pullは引き受ける。 近況を知るのと、相手の変化を自分の人生に取り込むのは、別の操作。
- 取り寄せられるのは、相手がpushしたものだけ。 相手がpushしていなければ、fetchしても新しいものは来ない。「相手の現在そのもの」には、そもそも誰も直接は触れない。