0

中央のgitリポジトリは、リセットされたローカルリポジトリを含むコミット後に奇妙な状態になりました。

このコミットで何が行われたかは100%正確にはわかりませんが、このコミットの後、このリセットされたローカルリポジトリから何かがプッシュされると、他のコミットからの変更が古いバージョンでサイレントに上書きされる可能性があります(「サイレント」は他のコミットの上書きを意味します)変更履歴には表示されません)。

私の質問は次のとおりです。
(1)何が起こったのかを診断するにはどうすればよいですか(できればリセットされたローカルリポジトリにアクセスせずに)?
(2)何が起こったのかわからない場合、この状態を取り除くための最善の行動は何ですか?

(2)問題のあるローカルリポジトリを破棄して二度と使用しないこと、(b)問題のあるコミットの前に中央リポジトリをHARDリセットし、問題のあるコミットを除くコミットを手動で再生することを考えています。

4

1 に答える 1

1

を使用したコミットによって行われたすべての変更を確認できますgit show <commit-id>。「他のコミットの上書きは変更履歴に表示されない」とはどういう意味かわかりません。gitに上書きなどはなく、コミットのみがあります。

それで、あなたは問題のあるコミットを特定しましたか?それだけのgit revertとき。

または、ブランチが強制プッシュによって書き直されました(一部のコミットは履歴から消えます)?さらに悪いことに、git fsck −−lost-foundガベージコレクションが行われるまで使用する必要があります。

次回は、によって非早送りを禁止するreceive.denyNonFastForwards=trueか、少なくともによってreflogを有効にするように、中央リポジトリを構成しますlogAllRefUpdates=true

于 2012-09-05T13:20:42.637 に答える