0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[origin/私][6章]cherry-pickしたcommitには、日付が二つある

0
Last updated at Posted at 2026-06-24

目次

──「心をgitで管理する世界」の物語で、新しいのはcommitterの日付だけ

5章へ

〈ショートストーリー〉

祖母の葬式のあと、家の片づけをした。

タンスの奥から、知らない祖母がいくらでも出てきた。若い頃の写真。誰かへの書きかけの手紙。畳まれたままの誰のものか分からない子ども服。長い履歴だった。私の知らないcommitが、何十年ぶんもそこに積もっていた。

全部は、継げない。

当たり前だ。祖母の八十年を、まるごと私にmergeすることなんてできない。それに ── もう、本人がいない。何をどう受け取ればいいか、聞こうにも聞けない。祖母の枝は、もうpullできない。

家を出たあの朝、私の手のひらは空っぽだった。これから自分でcommitするもので、いっぱいにするはずの手。その同じ手で、私は今祖母の遺したものの中から一つだけを握ろうとしていた。全部はつかめない。

口ぐせを選んだ。

何かあるたびに、祖母が言っていた。「ぼちぼち、ええわ」。慌てるな、という意味だったのか、もう十分だ、という意味だったのか。今となっては、確かめようがない。私の中に残っているのは、その音と、言うときに少し下がる眉だけだ。

それを、一つ、今の私に載せた。cherry-pick。彼女の履歴ごとではなく、その一行だけを。

しばらく経ったある朝。

仕事に遅れそうで、ばたばたしていた。子どもが牛乳をこぼした。私は舌打ちしかけて ── 代わりに言っていた。

「ぼちぼち、ええわ」

自分の声で。自分の口から。

言ってから、はっとした。あれは、祖母の言葉だ。なのに、今のは確かに私の言葉だった。同じ言葉。でも、祖母の、あの下がる眉は、私には付いてこなかった。たぶん私のそれは、祖母のとは少し違う意味になっている。

不思議と、それが嬉しかった。

継いだのは、コピーじゃない。私の版の「ぼちぼち、ええわ」だ。新しく私の履歴に刻まれた、私の一行。

子どもが、不思議そうに私を見ていた。この子もいつか、これを言うのかもしれない。私の口ぐせとして。祖母のものだとは、知らないまま。

それで、いいのだと思う。


〈技術ノート〉── cherry-pick

ノートは答え合わせではない。物語が嘘をついた、ちょうどその場所の地図である。

ここで、第3章の嘘が回収される

第3章で、私は「高3をmergeした」と言った。あれは嘘で、本当は一行だけを移すcherry-pickだった ── と、3章のノートで指摘した。本章は、その正しい操作を、正面からやっている。だから本章の物語は、めずらしく、ほとんど嘘をついていない。

git cherry-pickは、あるcommitの差分だけを取り出して、今いる枝に、新しいcommitとして載せる操作だ。

  • 相手の履歴は継がない(祖母の八十年は連れてこない)。
  • 共通祖先(merge base)も要らない(だから、もうpullできない故人からでも、記憶の中の一個なら移せる)。
  • 載ったcommitは、新しいハッシュを持つ。親が違うからだ。元と同じ変更でも、別のcommitになる。

だから物語の「継いだのは、コピーじゃない。私の版だ」は、正確だ。cherry-pickは複製ではない。差分は同じでも、別のcommitとして、あなたの履歴に生まれ直す。

mergeとcherry-pick(3章との対比)

取り込むもの 履歴 merge base 結果
merge 相手のcommit列ごと 連れてくる(commitはそのまま) 要る 二つの系譜が合流(親が二つのmerge commit)
cherry-pick 一個の差分だけ 連れてこない 要らない あなたの枝に、新しいcommitが一つ増える

湿らせたい合流(内戦)はmergeの絵、精度の移植(外科手術で一個つまむ)はcherry-pickの絵 ── 3章ノートで予告した使い分けが、ここで実物になる。

物語が、一つだけ言い落としたこと

「祖母のものだとは、知らないまま」── ここに、小さなbutがある。

cherry-pickは、元のauthor(書いた人)を、既定で保持する。新しくなるのはcommitter(適用した人=あなた)と、ハッシュだ。つまり、commitはあなたの履歴に生まれ直しても、authorの欄には、祖母の名前が残る

社会の上では、それは「私の口ぐせ」になり、子は出どころを知らずに継ぐかもしれない。だがgitの記録は、由来を消さない。受け継いだものは、自分の版になっても、authorだけは、相手のまま。

そして「少し違う意味になっている」も、技術的に正しい。同じ差分でも、適用先の文脈が違えば、効き方は変わる(文脈が食い違えばconflictすら起きる)。祖母の人生に置かれた「ぼちぼち、ええわ」と、私の朝に置かれたそれは、同じ差分・別の意味だ。

要点

  1. cherry-pickは差分一個の移植。履歴は継がない、共通祖先も要らない、ハッシュは新しい。 コピーではなく、あなたの版として生まれ直す。
  2. mergeとの違いは「履歴ごとか/一個だけか」。 3章でmergeと呼んだ操作は、本当はこれだった。
  3. authorは保持され、committerはあなたになる。 自分の版になっても、由来はauthor欄とblameに残る。同じ差分でも、置かれた文脈で意味はずれる。

7章へ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?