type t (* void *)

ソフトウエアのこととか

プログラミング: upstreamの変更を取り込みたくない時どうすればいいのか

Git運用中に困ったので正しい回答が欲しくメモしておく。
今レポジトリupstream, originがあるとする。

問題

originは常にupstreamに少し変更を加えたものだったので、 常時cronでgit mergeしていた。しかし今日初めて 「upstreamのレポジトリにはpushしたいけど、それがoriginに取り込まれては困る」 というコミットが成されてしまった。

試したこと1

git cherry-pickでそれ以外のコミットを取り込む。
しかしこれでは常にcherry-pickしなければupstreamでの変更を 取り込むことが出来なくなった。

試したこと2

git mergeしたのち、git revert 該当するコミットで変更分を取り戻す。
しかしこのあと該当するブランチとgit mergeしようとすると その差分を取り込もうとしてしまった。

てっきり私は一度合流してそれを差し戻すコミットをすれば gitは差し戻された状態がただしいのだと判断してくれると思っていたのだが。

解答(?

極めて疑問なのだが以下のような方法で修正は反映せず git mergeしてもそれが取り込まれなくなった。

  • git mergeをして、マージコミットをまだしない
  • git revert 該当するコミットを行う
  • ここでやっとコミットする

これでなぜ出来て上では駄目なのか全くわからない。が、上手く言っているようだ。
そもそも運用がいびつだというのは理解していて、これは 政治的なアレが原因なのでどうしようもない。

しかしなぜこれで上手く言っているのか分からないし不安である。。。。。。

追記:でこ先生・よんたさんのツイート

きょんさんのツイート