1

開発者の 1 人が誤って自分のローカル リポジトリを間違った共有リポジトリにプッシュしました。

git push と force を使用してヘッダーを適切な場所にリセットできたので、その部分は問題ありません。

ただし、間違ったコミットを取り除くことができませんでした。gitk --all に、親も子も持たないコミットとして表示されます (つまり、どのブランチにも接続されていません)。

これを完全に取り除く方法はありますか (共有リポジトリを凍結したため、最後のプッシュ以降、誰もプルしていません)?

4

3 に答える 3

1

エラーのあるコミットはまだ git リポジトリにありますが、私が正しく理解していれば、他のコミット (またはブランチ) によって参照されていません。

git gc以前の回答で既にわかっているように、このコミットは削除されますが、2 週間より新しいオブジェクトは削除されません。(データの損失を防ぐため)。

自分が何をしているのか (バックアップがあるなど) について本当に確信がある場合は、実行できますgit gc --prune=<date>。状態のヘルプgit gc:

「日付より古いルース オブジェクトをプルーニングします (デフォルトは 2 週間前で、構成変数 gc.pruneExpire でオーバーライドできます。このオプションはデフォルトでオンになっています。」

于 2013-06-30T22:03:04.450 に答える
0

git gcリモートリポジトリで実行できます。コミットがどの参照からも到達できない場合は、リポジトリからプルーニングする必要があります。事前に必ずバックアップを取ってください。

于 2013-06-30T21:29:30.147 に答える
0

奇妙な状態です。私はそのような修正を何度も行いましたが、それらの個別のコミットは見たことがありません。レポ自体で gitk をローカルで実行しますか、それともクローンですか?

私はいくつかの空/無関係なコミットを押し上げて、もう一度見ます-おそらくグリッチは消えます. そうでない場合は、実行しgit fsckます。

また、中央リポジトリを複製すると、複製に余分なコミットが表示されますか?

于 2013-06-30T21:53:15.580 に答える