1. ホーム
  2. git

[解決済み] 裸のgitリポジトリを通常のリポジトリに変換するにはどうしたらいいですか?

2023-05-30 02:24:16

質問

私は裸のgitリポジトリを持っていますが、sshを介してその内容にアクセスし、閲覧する必要があります(ファイルマネージャのようなユーザーエクスペリエンスで)。

私はそれをクローンすることができると仮定します。

git clone -l <path_to_bare_repo> <new_normal_repo>

しかし、私のリポジトリは約20GBの大きさで、それを複製するスペースがありません。裸のリポジトリをインプレースで変換して、その中の作業コピーで終わらせる方法はありますか?

どのように解決するのですか。

注意 : このテストは 非常にシンプルな 1-commit リポジトリでテストしました。これをダブルチェックするために マンページ を読み、StackOverflowで見つけたアドバイスに従う前に、常にバックアップをとっておくことをお勧めします。(バックアップはとっていますよね?)

を変換するには --bare リポジトリからベアでないものに変更します。

  1. を作成します。 .git フォルダをリポジトリのトップレベルに作成します。
  2. リポジトリ管理用のものを移動する ( HEAD branches config description hooks info objects refs など) を .git を作成します。
  3. 実行 git config --local --bool core.bare false を実行して、ローカルのgit-repositoryをnon-bareに変換します。
  4. (コメントにより タマーシュ・パップ ) ステップ3の後、あなたはブランチ master (あるいはメインブランチ) にいて、すべてのファイルが削除され、その削除が段階的に行われていることがわかります。これは正常な状態です。ただ、手動でチェックアウトして master を行うか、あるいは git reset --hard を実行すれば完了です。
  5. (によって報告された問題を解決するため ロイ ) 編集 .git/config ファイルに行を追加 fetch = +refs/heads/*:refs/remotes/origin/* の後に url = <...>[remote "origin"] セクションの中に入れてください。それ以外の場合は git fetch には origin/master と他のオリジンのブランチが表示されません。

これらの手順は、逆方向の この質問 とは異なり、quot;git-convert normal to bare repository" - 特に注意すべきは この回答 には、上記の手順 (どちらの方向でも) は 異なる を行うこととは異なると述べています。 git-clone . あなたに関係あるかどうかは分かりませんが、あなたが言及した git clone を質問しています。