GitHub上の独自のリポジトリをどのようにフォークしますか?


164

GitHubに公開リポジトリがあります。それを複製/コピーして、このリポジトリに基づく新しいプロジェクトで作業したいのですが、現在の状態に影響を与えたくありません。GitHub UIを使用してフォークを試みましたが、何も実行されませんでした。


4
正確に何を達成しようとしていますか?多分あなたはただ分岐することでそれを解決できますか?
Artefact2

4
プロジェクトのコピーを取得し、そのプロジェクトを拡張して、元のプロジェクトに影響を与えずに他のことを実行したいと考えています。それだけでした。どんな方法でも、それは解決されました。
WowBow

1
@ Artefact2 ..申し訳ありませんが、mceplによるソリューションで私のニーズは解決したと思いましたが、解決しませんでした。'git clone'を使用してプロジェクトのクローンを作成した後、元のリポジトリを指すのではなく、作成したgithub上の新しいリポジトリを指すようにします。どうすればそれを達成できますか?
WowBow

1
@ Artefact2私の質問はありましたか?
WowBow

1
新しいレポの作成と比較したフォークの利点は、グラフとネットワーク履歴がリンクされていることです。Githubがこれを許可しないのは残念です。
2016年

回答:


205

自分のリポジトリをフォークすることはできないと思います。
それを複製して新しいレポにプッシュするのは良いことですが、次のことを行う必要があります。

git clone https://github.com/userName/Repo New_Repo
cd New_Repo
git remote set-url origin https://github.com/userName/New_Repo
git remote add upstream https://github.com/userName/Repo
git push origin master
git push --all

(を参照git push

GitHubで独自のプロジェクトをフォークする」で説明されているすべてのプロセスを参照してください。


6年後(2016年)に、GitHubを含む別のソースからリポジトリをインポートできるGitHubインポーターができました。
「を参照してください。GitHubの輸入とリポジトリのインポート

https://help.github.com/assets/images/help/importer/import-repository.png

narf回答(賛成)もそのプロセスを示しています。

これにより、GitHubのURLを使用して、新しいリポジトリを作成し、古いリポジトリの完全な履歴を新しいリポジトリにインポートできます。

繰り返しますが、得られるのはコピーであり、実際のフォークではありません。新しいリポジトリから古いリポジトリへのプルリクエストは作成できません。

繰り返しますが(bis)、のコメントで述べられているようmpersico、これは真のフォークではありません

他の人にフォークしてPRを実行するためのアクセス権を持たせたいオープンソースプロジェクトの正規のソースリポジトリであるfooがある場合、そのリポジトリで作業したくないので、発行に使用できるフォークが必要ですプロジェクトに対する適切なPR。
私はこれを解決し、GitHubに2つ目のアカウントを作成し、それにフォークしました。


@VonCに感謝します。設定ファイルの編集について言及し忘れたと思います。
WowBow

1
私は.git / configについて話していました。オリジンのURLを変更しない限り、「git remote add ....」と言うと、オリジン名がすでに存在するため拒否されます。しかし、設定ファイルのURLを変更すると、正常に動作します。あなたが私に指摘した記事はそれを示しています。
WowBow

7
@WowBowがremote既に存在する場合は、を実行しgit remote set-url origin https://github.com/userName/New_Repoます。これで.git/configファイルが変更されます。git-scm.com/docs/git-remote
VonC

1
@aus、それはあなたが上流からフェッチするために期待されています。stackoverflow.com/a/33360766/6309
VonC

1
同じ組織内のリポジトリからのフォークは許可されるべきだと今でも感じています。誰にでも汎用的な中央リポジトリがあり、そこから常に更新を取得すると同時に、ニーズに基づいて分岐したコピーに特定の変更を加えたい場合はどうでしょうか。
Prachi

107

GitHubウェブサイトから30秒でそれを行う非常に簡単な方法:

  1. リポジトリのURLをコピーします。例:(https://github.com/YourName/YourOldRepoヒント:githubでリポジトリのメインページを表示したときのURLです。
  2. +右上のアイコンをクリックします。
    https://i.stack.imgur.com/9zJgo.png
  3. 「リポジトリのインポート」を選択します。
  4. 「古いURL」を要求する場所に、手順1でコピーしたURLを貼り付けます
    https://i.stack.imgur.com/vgWd3.png
  5. 新しいリポジトリの名前を入力して、をクリックしますBegin Import
  6. それでおしまい!これで、すべてのコミット履歴とブランチを含む完全なリポジトリのコピーができました!

制限:それは実際には本当のフォークではありません。これはレポのコピーです。プルリクエストを前後に行うことはできません。


4
2010年の古い回答でGitHubインポーター(2016年にリリース)を忘れてしまいました。そのツールとあなたの回答への参照を追加しました。
VonC 2017



4

それを複製し、新しい空のリポジトリを作成して、それにプッシュするだけです。


1
ありがとう。考えすぎでした。
WowBow

ローカルマシンにクローンを作成して空のリポジトリを作成しましたが、git origin github.com/userName/New_Repo.git .. をしようとすると、リモートオリジンがすでに存在していると表示されます。どうすれば解決できますか?
WowBow

そして今、私がそれを押すと、元のレポが変わります。
WowBow

新しいレポにプッシュする方法を教えていただけますか?クローンを作成して新しいリポジトリを作成しましたが、新しいリポジトリにプッシュできませんでした。
WowBow

5
リモコンを変更する必要があります。それ以外の場合は、同じ場所にプッシュしようとします。 git remote rm origin続いてgit remote add origin URL-to-new-repository
wadesworld

1

「リポジトリの複製」に関するこれらの公式の指示に従いましたが、うまくいったようです。

https://help.github.com/articles/duplicating-a-repository/

フォークせずにリポジトリの複製を作成するには、元のリポジトリに対して特別なcloneコマンドを実行し、新しいリポジトリにミラープッシュする必要があります。これは、GitHubでホストされているものだけでなく、あらゆるgitリポジトリで機能します。


1

残念ながら、VonCの受け入れられたソリューションは、私が得たのでうまくいきませんでした

リモート:リポジトリが見つかりません

うまくいったことは次のとおりでした:

  1. githubでnew_repoを作成する
  2. git clone new_repo
  3. cd new_repo
  4. git remote addアップストリームold_repo.git
  5. git pullアップストリームマスター
  6. git push originマスター

上記のすべてをここから取得しました


1

GitHubを使用する非技術に精通している人のために、ここに上記の他の素晴らしい答えの代替としての1つの簡単な解決策があります。必要なのは、GitHubデスクトップアプリケーションだけです。

  1. ブラウザから独自のプロジェクトリポジトリを開き、zipなどとしてダウンロードしますyour-project-master.zip
  2. 解凍して、新しいリポジトリとして名前を変更します。
  3. GitHubデスクトップを開き、解凍したローカルパスの新しいリポジトリを参照して、新しいリポジトリを追加します。 ここに画像の説明を入力してください
  4. 公開ボタンをクリックして、githubに公開します。名前と説明を追加することを忘れないでください:)


-1

これを試してみましたが、うまくいきました:

  1. リポジトリを組織アカウントにフォークする
  2. 名前を変更
  3. 所有権を自分に戻す

4
いいアイデアですが、私はこれを試しただけでエラーが発生しましたaspiers already has a repository in the UPSTREAM/NAME network
Adam Spiers

これは、リポジトリの名前を変更または転送した後にリダイレクトがあるためです。github.com
blog /

-1

新しいリポジトリを作成するとき、リポジトリ.git urlを使用して別のリポジトリからインポートできます。30秒かかりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.