中央サーバーに共有の「開発」リポジトリがあり、さまざまなブランチがあり、それらをv4、v5、v6と呼びます
開発者 (「Alice」) が v6 にコミットし、すべて問題ないようです。関連するすべての詳細を取得した受信後フックがあります。継続的インテグレーション サーバーはレポを複製し、このコミットをチェックアウトして作業することができます。すべて問題ありません。
ただし、個人用コピーと git pull で v6 をチェックアウトすると、「Alice」というコミットがまったく作成されません。ログに表示されないか、マシンにまったくプルされません。
cgit を介してリポジトリを参照すると、コミットが「ログ」に表示されませんが、SHA とブランチから表示 URL を作成すると、コミットを確認できます。
アリスが中央の (裸の) レポにある目に見えないパラレル v6 ブランチにプッシュしたようなものです。この目に見えないブランチを明らかにするにはどうすればよいですか?
それで、何が起こったのでしょうか?アリスがコミットする数時間前に、git push origin :v6
コマンドを使用して中央レポの v6 ブランチを削除しました。v6 は空で、元のマスターに基づいていましたが、代わりに最新の v5 の作業から派生させたいと思いました。この目的のために、v5 をチェックアウトし、git pull を実行してから、これを v6 にチェックアウトしました。次に、この v6 を共有リポジトリにプッシュしました。
したがって、私の削除が機能しなかったようで、どういうわけか Alice は v6 にプッシュしましたが、git が v6 であると考える v6 ではありませんでした。
私の修正?ベア リポジトリの refs/heads/Release_6 を変更して、Alice のコミットの SHA を含めます。
しかし、それは正しいことですか?深刻な不満なしに、どのように git はシャドウ ブランチを維持または許可しますか? Git は私のレポや Alice のレポで文句を言っていません..
回答: むき出しのレポ refs/heads/v6 が私の不器用なリベースの試みによって SNAFU になったようです。Alice のコミットの SHA を裸のレポ refs/heads/v6 に書き込んだ後、すべてが表示されます。
POST_MORTEM 分析。
サーバーの「ベア」レポは、実際にはオリジナルの作品から (--bare を使用して) 複製されたものです。元のリポジトリには v4、v5、v6 がありました。
git fetch origin +refs/heads/*:refs/heads/*
「+」修飾子のために、元のレポから「レガシー」v6で作成した「新しい」v6を簡単に上書きしたと思います。
これは、v6 の作業が機能しているように見えたのに、週末にかけて姿を消した理由を説明しています。
gitのせいではなく、明らかに私自身の間違いです。いたずらなステップに座る時間。