2つの異なるドメインにデプロイされたWebアプリケーションを含むgithubにリポジトリがあります。このアプリケーションには、デプロイ先のドメインに応じて異なる動作をするためのわずかなロジックフォークがあります。
ドメインごとに1つずつ、2つの別々のリポジトリに分割したいところまで来ました。
Githubでは、同じ組織にフォークすることはできません。 「git duplicate repo」を検索すると、クローンとミラーPushを裸にする必要があることが示唆されていますが、それは両方のリポジトリの同期を維持するためのようです。
これについて行く最善の方法は何ですか?可能であれば、新しいコピーに古いコミット履歴を保存したいと思います。
新しいリポジトリを作成し、作業コピーからプッシュするだけです:
git clone [email protected]:me/myrepo-original
cd myrepo-original
git remote set-url Origin [email protected]:me/myrepo-new
git Push Origin master
これで、myrepo-new
と同じmyrepo-original
という新しいリポジトリが作成されました。
フォーク関係が必要ない場合(たとえば、何らかの理由で何らかの分離された代替レポジトリが必要な場合)、レポジトリをアウトラインとしてレプリケートして、Googleが検出し、larsksの答えが適切です。
doをフォークにしたい場合は、Githubサポート([email protected]または https://github.com/support )にお問い合わせください。彼らはあなたのために同じ組織にフォークを作成します。 (彼らもこれについては気にしません。アカウント内のレポ名は一意でなければならないので、レポの代替名を提供する必要があります。)
Update:ユーザーのSteve Riceは、GitHubサポートが、サポートは現在、アカウントに2番目のフォークを設定しないと述べていると下のコメントで報告しています。サポートの従業員がそれを行うことができるかもしれないので、あなたはまだ彼らに尋ねることを試みることができます-しかし、これは彼らがそうすることを妨げる政策変更でもあるかもしれません。
GithubのImport Repositoryオプションを+メニューonページの上部
これにより、コピーされたリポジトリの正確な内容で新しいリポジトリが作成されます。欠点は、Githubのフォークとしてカウントされないことです。
別の方法は、現在のレポジトリのリモートとして、コピーされる元のレポジトリを追加することです。
#create a new repo in the org1 organization called myrepo-new
ローカルターミナルで、次を実行します。
git clone [email protected]:org1/myrepo-new
cd myrepo-new
git remote -v #shows current repo link on github as Origin
git remote add name-for-remote https://github.com/org1/repo-old
git remote -v #shows repo-old as name-for-remote
git fetch name-for-remote
git merge name-for-remote/branch-to-get-from-remote
#Now fix any conflicts if present
#If number of files/commits is very high, the desktop client may hang when you try to commit your changes after merge. Try switching to Git Shell if this happens.
git status
git commit -m "commit message"
git Push Origin master
代替ソリューション:
新しい組織を作成し、そこにフォークします。リポジトリが非公開の場合、新しい組織でも非公開のままになります。その後、外部の開発者またはフォークされたレポジトリにアクセスしたい人にアクセス権を付与し、PRを元のレポジトリに戻すことができます。