gitリポジトリを複製するには?(フォークなし)


117

2つのリポジトリがあり、1つ全体を、最初のリポジトリとは異なるアクセスレベルを持つ他の空のリポジトリにコピーする必要があります。コピーとマザーリポジトリはリンクされるべきではありません。

私はgitを初めて使用するので、誰かが私にこれを手伝ってくれるとしたら最高です。


5
確かではありませんが、クローンを作成してから、git config remote.origin.url git://new.url/proj.gitを使用して、remote.originを新しい担当者に設定できます。
Rufinus

先ほど投稿したリンクはそのようなことをしています。
nbz

@rudinusちょうどそれをやった。ありがとう。
カウボーイビバップ

回答:


205

https://help.github.com/articles/duplicating-a-repositoryを参照してください

短縮版:

正確に複製するには、ベアクローンとミラープッシュの両方を実行する必要があります。

mkdir foo; cd foo 
# move to a scratch dir

git clone --bare https://github.com/exampleuser/old-repository.git
# Make a bare clone of the repository

cd old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.git
# Mirror-push to the new repository

cd ..
rm -rf old-repository.git  
# Remove our temporary local repository

注:上記はリモートgitリポジトリで正常に機能します。手順はgithubに固有ではありません

上記はリポジトリの新しいリモートコピーを作成します。次に、それを作業マシンにクローンします。


2
古いリポジトリと新しいリポジトリの名前が同じ(git URLが異なる)場合はどうなりますか?私と同じようJeremy.gitに別のものにクローンを作成しますJeremy.git
gran_profaci 14

これは完全に重複することはありません。問題は転送されません。
スラム

これは歴史を保存しますか?
トーマス

@トーマス私はこれをやっただけで、はい、それは私の歴史のすべてをコピーに保存しました。新しいレポにプッシュしてcdした後、リモートにプッシュしたので何もないことに注意してください。プルを行う必要があります
PfunnyGuy

7
この回答をGitHubで使用するには、まずGitHubに新しいリポジトリを作成する必要があります。
Alex Holcombe 2017年

22

git-copyを使用することもできます

Gemでインストールします。

gem install git-copy

その後

git copy https://github.com/exampleuser/old-repository.git \
    https://github.com/exampleuser/new-repository.git

1
最初にgemをインストールするにはどうすればよいですか?これは最も手間のかからないソリューションのようです。賛成です!
saran3h

これは通常、Rubyインストールの一部です。Ubuntuで行うsudo apt install ruby
危害

9

GitHubにコピーする場合は、GitHubインポーターを使用しコピーできます。元のリポジトリは、他のバージョン管理システムからのものである場合もあります。


4
これは完璧に動作しても、履歴を保持-高いupvotedされなければならない
ジョン・D

1
同意する。このアプローチははるかに直感的で、完全にGithub GUI内で実行でき、混乱を招くコマンドラインの意味のないものは一切含まれていません。手順:1)GUIで新しいリポジトリを作成しますが、「READMEでこのリポジトリを初期化」というチェックボックスはクリックしないでください。これを実行すると、Githubが新しいページと「…またはコードをインポート」というオプションを表示します別のリポジトリ。」それでおしまい!
ルークF.

5

既存のファイルのすべてまたはほとんどのファイルを使用して新しいリポジトリを作成する場合(つまり、一種のテンプレートとして)、目的の名前で新しいリポジトリを作成し、それを次のように複製するのが最も簡単な方法です。デスクトップ、そしてそこに欲しいファイルとフォルダを追加するだけです。

すべての履歴などを取得するわけではありませんが、この場合はおそらくそれを望まないでしょう。


-1

ターミナルを開きます。

リポジトリのベアクローンを作成します。

git clone --bare https://github.com/exampleuser/old-repository.git

Mirror-push to the new repository.

cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git


私はあなたのアプローチを試みました。そして、私はこのエラーメッセージを受け取りました:![リモートで拒否されました]マスター->マスター(事前受信フックは拒否されました)および他のいくつかの同様のメッセージ。最後のエラーは:エラー:いくつかの参照をプッシュできませんでした。どうすれば修正できますか?
LND
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.