31

ワイプされるコンピューターからgitリポジトリのクローンを作成しています。

元のリポジトリを作成せずにリポジトリのクローンを作成することは可能ですorigin/masterか?または、クローンを作成してから、リモートブランチを削除する必要がありますか(これはで実行されgit remote rm originます)?

編集:リポジトリにはブランチが1つだけあり、タグはありません。

4

5 に答える 5

28

マスターブランチのクローンを作成するために、元のリポジトリを「オリジン」リモートにする必要はありません。

新しいマシンで、新しいリポジトリを作成します。

git init foo

次に、リモートを作成せずに、古いリポジトリを新しいリポジトリにプルします。

cd foo
git pull <reference to old repository>

ただし、リポジトリを保存する最も簡単な方法は、リポジトリのディレクトリを圧縮して、ファイルを新しいマシンに移動することです。これにより、すべてのリモコン、タグなどが保持されます。

以下で説明するように、リポジトリをコピーするときは、大文字と小文字を区別するファイルシステム(Linux、Mac、NTFSなど)から大文字と小文字を区別しないファイルシステム(Fat32など)に移行するときに注意してください。

于 2010-02-12T04:31:59.993 に答える
10

まず、--origin <name>のオプションを使用できますgit clone

--origin <name>、- o <name>

リモート名のオリジンを使用してアップストリームリポジトリを追跡する代わりに、 <name>を使用します。

次に、を使用git remote addして、既存のリポジトリにフェッチするリポジトリを追加できます(したがって、を使用できますgit initgit remote add <name> <url>


リポジトリのミラーを作成refs/heads/*refs/heads/*、クローンを作成する場合は、リポジトリを作成しinit、適切なrefspecを設定してから、fetch...

または、を使用できますgit clone --mirror。これは、OPの質問の現在のバージョンに回答する必要があります。

ただし、これでは構成(リモートを含む)、ワークツリーの状態、reflogなどは保持されません。これについては、Jess Bowersが述べたように、リポジトリ全体をコピーする必要があります。

于 2010-02-12T13:07:13.197 に答える
4

このような転送を処理する一般的な方法は、git bundleです。githubリポジトリのバックアップを参照してください。

2番目の(新しい)デスクトップから:

git bundle create file:///\\oldDesktop/share/myGitRepo --all

ローカルgitリポジトリのクローンを作成できる1つのローカルファイルを作成します。

注:プロトコルはfile:///UNC(Universal Naming Convention)Windowsパスをサポートし、残りのパスは' /'の代わりに''を使用し\ます。WindowsLANでのGitを参照してください。

于 2010-02-12T08:02:18.460 に答える
2

リモートブランチを削除する必要があると思います。

于 2010-02-12T01:12:13.250 に答える
2

リモートリポジトリには、マスターだけでなく多くのブランチがありますか?もしそうなら、それはトリッキーです。リモートを削除すると、すべてのリモート/オリジンブランチが削除されるため、すべてのブランチのローカルコピーも作成する必要があります。(試してみました!)

したがって、次のようなことができます。

git clone <remote_url>
cd <repo>
for b in $(git branch -r | grep -v HEAD | grep -v master);do
    git branch $(basename $b) $b
done
git remote rm origin

もちろん、Jess Bowersが言ったように、マシンにアクセスできる場合は、tarまたはzip形式でファイルを移動する方が、さらに簡単です。

ベアクローンを作成することもできます。

git clone --bare <remote_url>

そして、そこから新しいクローンを作成します。

于 2010-02-12T05:00:05.367 に答える