GitHubリポジトリのフォーク依存関係を削除する


206

自分のリポジトリが元々別のプロジェクトのフォークだったことをGitHubに忘れさせたり関連付けを解除したりするにはどうすればよいですか?

GitHubでプロジェクトをforkしました。「何からでも、何からでも分岐」が表示されます。親リポジトリ「whatever / whatever」は維持されなくなりました。元のリポジトリのコードベースを引き続き使用して、独立したリポジトリを作成することを許可されています。

プロジェクトを元のリポジトリから切り離す方法はありますか?

回答:


175

githubサポートに連絡して、リポジトリを「通常モード」に切り替えるよう依頼することができます。

、このページ、段落「フォークで作られたコミット」、1つがスイッチへの支援を通過しなければならないことを説明されています。したがって、それはあなたが前に説明されている、あなたのレポを破壊し、再作成しない限り、自分(でそれをする方法がないと思われる...あなたはチケットや、彼らのように、プロジェクトに添付ウィキ持っている場合、あなたはので注意が必要ない場合は意志を削除されます!)


31
サポートへの連絡は問題なく機能することを確認できます。また、数時間で返信することもよくあります:-)
BenC

1
リンク先のページには、記載されている情報が含まれていません。
Kara Brightwell

3
@MattBrennanページは変更されましたが、最後のセクションには「フォークを切り離してGitHub.comまたはGitHub Enterpriseのスタンドアロンリポジトリに変換するには、それぞれGitHubサポートまたはサイト管理者に連絡してください。」
Thomas Moulard 2014年

1
超高速..彼らは1時間で私に返信しました。ありがとう
myDoggyWritesCode

2
Github Enterpriseでは、admin-> Collaboration-> Networkにあります。ユースケースに応じて、「Make Root」、「Detach」、または「Extract」を使用する必要があります。
Kutzi

45

github UIからフォークされたリポジトリを新しいリポジトリ(フォーク依存関係なし)に複製してから、元のフォークされたリポジトリを削除できます。

  • githubにサインインする
  • 右上隅の+記号を選択し、リポジトリインポートします
  • フォークしたリポジトリをインポートします。新しいリポジトリには、フォークの依存関係はありません。
  • リポジトリ設定で元のフォークされたリポジトリを削除します。

1
これが最も簡単で、それが私にとってうまくいったことです:)。非常に賢い。
moxi 2018

1
他の誰かがインポート機能の「ハング」に問題がありましたか?Mineは「プロジェクトのバージョン管理システムを検出しています…」に約5時間携わっています。キューに入れられているのか、それとも実際にハングしているのかわかりません。レポは小さいです。私が列にいる場合に備えて、一晩それを残したくなります。
ベンジャミンウェスト

気になったので「キャンセル」をクリックしました。[キャンセル]をクリックすると、VCS検出をスキップし、コード/コミット/ブランチなどをインポートするだけで済みます。これは、Github-> Githubをインポートする場合に当てはまりました。別のVCSからの場合、インポートはハングしていなかった可能性がありますか?わからない。これを2番目のリポジトリで実行することについても注意してください。それを機能させるには、2回キャンセルする必要がありました。CLIがすべての同じデータをコピーする場合、より良い方法かもしれませんが、これがこのルートを選択した他の人に役立つことを願っています。
Benjamin West

9
明確にするために、このアプローチでは問題とプルリクエストが保持されません。
golopot

魅力的な作品!あなたが命の恩人であることに感謝します!:)
omn​​imind

44

ローカルリポジトリにすべての重要なブランチとタグがあることを確認し、githubリポジトリを削除し、通常の方法(フォークしない)でリポジトリを再作成し、でローカルリポジトリをプッシュしますgit push --all。公開したくないローカルブランチがある場合は、操作用に一時的にクリーンなローカルクローンを作成することをお勧めします。

ただし、これによりwikiと問題が取り除かれます。Wikiは実際には独自のリポジトリであるため、Wikiを複製してから再作成してプッシュすることで同様に処理できます。リポジトリのアドレスは、wikiのGit Accessページ(git@github.com:user/repo.wiki.git)にあります。

これは問題を残します。それらはAPIを介してエクスポートできますが、私の知る限り、問題とコメントを作成できるのは個人のみなので、完全にインポートすることは不可能です。

したがって、問題を保存する必要がある場合は、Thomas Moulardが示唆するようにgithubのサポートを行う必要があります。


問題の数によっては、Webから古いリポジトリから削除する前に、それらを1つずつ新しいリポジトリに転送できる場合があります(help.github.com/en/github/managing-your-work-on- github /…)。私は、断固とした個人が1時間あたり100以上の問題を転送できると思います。これは楽しいことではありませんが、多くのリポジトリでは実行可能なことです。
スマ

22

同様の問題が発生し、このgithubヘルプページを使用して解決しました。別のユーザーが親切に開発したテーマを使用しているブログの場合と同じように、wikiと問題トラッカーは気にしませんでした。

フォークされたリポジトリを切り離し、履歴全体を失うことなく数回のコミット後にそれを自分のリポジトリとして使用するには:

git clone --bare git@github.com:user/forked_repo.git

new-repositorygithub Webサイトで新しい空のリポジトリを作成します。ミラーバージョンをプッシュします。

cd user.github.com.git/

git push --mirror git@github.com:user/new-repository.git

githubで名前を変更しforked_repository、別の名前でバックアップとして保持し、必要に応じて更新を確認できます。または単に削除します。

の名前new-repositoryを元の名前に変更すると、ジョブが実行されます。副作用として、コミットが履歴に表示されるようになりました。


11

これはGitHub Enterpriseにのみ適用され、github.comには適用されません

管理者権限を持つアカウントにログインしました:

  1. 切り離す必要があるリポジトリに移動します。 https://<ghe url>/<org>/<repo>
  2. 右上隅にある「Site Admin」ロケットをクリックします
  3. トップメニューバーの「コラボレーション」をクリック
  4. 左側のペインで「ネットワーク」をクリックします
  5. [ネットワーク構造]ペインで[ルートにする]をクリックします
  6. 受け入れる

これはGitHub Enterprise 2.9でテストされました


ユースケースによっては、「デタッチ」または「抽出」がより適切な場合があります。「Make Root」は基本的に現在のルート->子の方向を反転させるため、少し変です。(Github Enterprise 2.17)
Kutzi

10

aurelienClaytonからの情報を使用して、私はこれを次のようにして行うことができました:

$ git clone --bare https://github.com/my/forked_repo.git
<delete forked_repo on GitHub>
<recreate repo on GitHub using same name>
$ cd forked_repo.git
$ git push --mirror

ここにドキュメントがありgit clone --bareます:

裸のGitリポジトリを作成します。つまり<directory>、管理ファイルをで作成して配置する代わりに<directory>/.git<directory>それ自体をにし$GIT_DIRます。作業ツリーをチェックアウトする場所がないため、これは明らかに-nを意味します。また、リモートのブランチヘッドは、対応するローカルブランチヘッドにマッピングされずに、対応するローカルブランチヘッドに直接コピーされrefs/remotes/origin/ます。このオプションを使用すると、リモート追跡ブランチも関連する構成変数も作成されません。

ここにドキュメントがありgit push --mirrorます:

プッシュする各参照に名前を付ける代わりに、その下にあるすべての参照refs/(、、およびを含みますがrefs/heads/、これらに限定されません)がリモートリポジトリにミラーリングされることを指定します。新しく作成されたローカル参照はリモートエンドにプッシュされ、ローカルで更新された参照はリモートエンドで強制的に更新され、削除された参照はリモートエンドから削除されます。これは、構成オプションが設定されている場合のデフォルトです。refs/remotes/refs/tags/remote.<remote>.mirror

注:他のgitベースの回答と同様に、これはgitWikiや問題など、リポジトリの一部ではない問題をコピーしません。タピオあたり:

  • wikiは独立したgitリポジトリであり、Tapioごとに同様の方法で処理できます。アドレスは次のとおりgit@github.com:user/repo.wiki.gitです。
  • 問題はGitHub APIを介してエクスポートできますが、ユーザーのみが作成できるため、再作成時に問題が発生し、インポートによって情報が失われます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.