6

回答に飛びつく前に、この混乱を注意深く読んでください!

問題:

  1. 私はプロジェクトに取り組んでいます(バージョン管理にgitを使用しています)。
  2. タグ v2.x を作成し、リモートの originにプッシュしました。
  3. このリモート オリジンは、1.x シリーズではタグを持たないプライベート ミラーです。理由- v2.x でゼロからコーディングを開始したため、1.x は歴史的な理由のみで維持されています。
  4. これを知らずに、公開の github リポジトリに別のリモートを追加しました。
  5. 最新のタグとコミットを github にミラーリングしようと思いました (私は唯一の開発者なので、わざわざマージしませんでした!)

私が使用した:

git push --mirror

そして、Github から 1.x シリーズのすべてのタグを削除しました!

現在の状況:

  • 私はたくさんグーグルで検索し、gitのマニュアルを読みました。git reflog/reset/rebase を実行しようとしましたが、何も復元できませんでした。
  • 私のローカル環境。2.x でゼロから始めたので、タグ 1.x に関連するコミットはありません
  • これまでのところ何も回復できていませんが、Github でリモート コミットが見られます。例: https://github.com/rtCamp/buddypress-media/commit/4614fcdacfbe21dae88e50e66707ef57b786ee37

つまり、データはリモートに存在します...

うまくいくかもしれないもの:

  1. ローカルで削除された「コミット」に関するログを含むすべてのログで Github リポジトリを複製できる場合、「ローカル」でもコミットが削除されます。その後は git reflog/rebase/reset の演習かもしれません。

  2. リモート git は完全なレポ自体であり、SHA1 ハッシュによるコミットを表示しているため、「リモート」で git reflog/rebase/reset を実行できれば、理論上はうまくいくと思います。

私は純粋なgitの方法を探していることに注意してください。手動で「タグ」(zip) をダウンロードし、SVN から復元できます (1.x では SVN を使用していました)。

あなたの提案/回避策を教えてください。

4

3 に答える 3

1

gitのデータが失われる可能性があることを苦労して学びました。

私の質問に対する答えはありません。私はいくつかの手作業をしなければなりませんでした (古いタグを古い svn アーカイブからコピーする + 圧縮されたバージョンをダウンロードしてタグ付けするなど)

したがって、次のようにします。

  1. git リポジトリをローカルで初期化し、いくつかのファイルを追加してコミットします。
  2. 次に、リモートオリジンを変更してgit push --mirrorから、リモートサーバーに変更します

リモート リポジトリは、ローカル リポジトリの完全なミラーになります。リモートリポジトリに他のクローン/バックアップ/ミラーなどがある場合、これを元に戻す方法はありません.

もちろん、私が(偶然に)行ったことは非標準的な方法だったので、gitは責任を負いません...

于 2012-09-29T17:48:07.827 に答える