web-dev-qa-db-ja.com

フォークとgithubのブランチの違い

Githubでホストされているプロジェクトをフォークした場合。すべてのブランチをフォークしますか?フォークがどのブランチに基づいているかを知るにはどうすればよいですか?言い換えれば、どのブランチが私のPCにダウンロードされますか?

121
Jonathan.

GitHub上のすべてのブランチは、フォークでコピーされます。 (明らかに、これには最初にGitHubにプッシュされなかったブランチは含まれません。)

ただし、フォークはGitHubからGitHubへの操作です。 PCには何もコピーされません。 Gitcloneとはまったく異なります。 「プロジェクトのクローンを作成すると何がコピーされますか」と尋ねる場合は、 git-clone(1) のマニュアルをご覧ください.

42
J. C. Salomon

このように考えてください:

repo [sitory]は、1つまたは複数のブランチにわたるチームの共同作業に対応します。すべての寄稿者は、独自のコピーを持っています。

メインリポジトリの各forkは貢献者の作業に対応します。フォークは、ユーザーアカウントにレポジトリのクローンを保存するためのGithub(Gitではない)コンストラクトです。クローンとして、フォークを作成した時点でメインリポジトリにすべてのブランチが含まれます。

フォーク内および/またはメインリポジトリ内の各ブランチは、作業方法に応じて、いくつかの種類に対応できます。各ブランチはプロジェクトのバージョンを参照できますが、修正プログラムや実験的な作業など、さまざまな開発チャネルにも対応できます。

プルリクエスト(GitHubエコシステム内)はタスクに対応します。分離された終了タスクをメインリポジトリに提供するたびに、そのタスクで行われたcommitsに対応するプルリクエストを作成します。これらのコミットは、my forkまたはmy branchからmain repoにプルされます。

コミットは、コードに対する一連の変更です。これは、Gitで最も興味深いことの1つです。ファイルを転送するのではなく、変更のログを転送します。

136
Adam Grant

ForkはGitHub側のクローンです(すべてをクローンします)。
レポのクローンを作成すると、そのレポのすべての履歴とそのすべてのブランチが取得されます。

理論的には リモートリポジトリのデフォルトブランチを変更 が可能ですが、GitHubリポジトリのクローンは主にマスターブランチを探します。 GitHubクローンが取得する「デフォルト」ブランチを変更する意味は、マスターブランチの名前を変更する必要があります。

9
VonC

プロジェクトをフォークする場合、プロジェクト全体のコピーをgitハブアカウントに作成します。あなたはあなたのPCに何も対処していません

PCでコピーを作成するには、クローンを作成してすべてのものを取得する必要があり、そのプロジェクトのすべてのブランチとコードを取得できます。

3
Hunt

Github Webサイトからプロジェクトのフォークを作成すると、すべてのブランチがアップストリームプロジェクトから取得されます。

新しく作成したフォークからローカルPCにクローンを作成すると、PCのOriginリモートがGithubのフォークのマスターブランチを指します。

2
bhamby

これは非常によく説明できます。 GitHubに中央リポジトリがあります。パーソナルコンピュータでクローンを作成して変更を加える場合、メインリポジトリのこのローカルクローンはフォークと呼ばれます。

ブランチは別のものであり、fork/repoに含まれています。実際、ブランチは開発のさまざまな段階でのあなたの仕事です。一連の機能を保存したり、さまざまなユーザーにアクセスを許可したり、クライアントにサイトをデモンストレーションしたりするために、必要に応じて作成されます。

1
Avinash Thombre

ブランチを使用する場合とフォークを使用する場合の実際の例を共有したいと思います

ショップにはGitLabがあり、時々Laravelプロジェクトのパッケージで作業する必要があります。通常、ブランチを作成し、実際のVMプロジェクトを使用してローカルLaravel dev環境でテストしているブランチに変更をプッシュします。

私たちのプロジェクトがにあるとしましょう

https://github.com/yardpenalty/mainproject.git

ブランチの使用法:

ブランチがIt_doesnt_matterと呼ばれるとしましょう

ブランチを本番用に設定したら、このブランチへの最後のプッシュを行い、マージリクエストを作成テスト用にUATに入ります。テストがQCを通過すると、変更は次のようになります。本番環境に統合されました。

merge from It_doesnt_matterbranchがマスタープロジェクトにプッシュされました

https://github.com/yardpenalty/mainproject.git

パッケージプロジェクトがにあるとしましょう

https://github.com/yardpenalty/mypackage.git

メインプロジェクトは本番環境でこのパッケージを使用するため、(他の理由の中でも)単にこのパッケージにプッシュして変更を加えることはできません。 Web開発者が本番環境で変更を加えるためにこのパッケージを編集する必要があるとしましょう。

パッケージを公開するなどして変更を確認できないため、単純なブランチは機能しません。

フォークの使用法:パッケージで少し巧妙な作業を行う必要があるので、フォークを介して本番パッケージのクローンを作成します。 composer.jsonファイルを更新して、現在フォークがユーザーまたはグループパスにあるフォークを指すようにすることができます。

https://github.com/yardpenalty/mypackage.gitにフォークを作成します

そしてそれをhttps://github.com/yardpenalty/yards/mypackage.gitと呼びます

これで、composer.jsonファイルを更新して、「リポジトリ」内のこのパッケージを指すことができます。

 {
            "type": "github",
            "url": "https://github.com/yardpenalty/yard/mypackage.git"
 }

]

0
yardpenalty