4

多くの github リポジトリでは、重要なコード変更ごとにフォークを作成する必要があります。

これは、git での分岐とまったく同じです。

なぜgithubはフォークを導入したのですか?

4

3 に答える 3

18

(私は git ブランチのアイデアが好きです - git ユーザーは日曜日に集まってたくさんの揚げ物を食べます ;))

github でプロジェクトをフォークし、独自のリポジトリに変更を加えるという考えは、プロジェクトの所有者があなたを信頼したり、リポジトリへのプッシュ アクセスを許可したりする必要がないということです。リポジトリからコードをマージすることを検討してもらいたい場合は、プル リクエストを送信できます。GitHub には、上流の開発者があなたの貢献をレビューしてコメントできるプル リクエストの優れたシステムがあります。

誰もが 1 つの共有リポジトリにプッシュできる信頼できる開発者のグループでは、通常、開発した各新機能を新しいトピック ブランチとしてプッシュし、他の人に自分の作業をレビューしてマージを検討するよう依頼します。

git の多くの優れた点の 1 つは、特定のブランチ ヒントがどのリポジトリにあるかが特に問題にならないことです。そのコミットには常に同じ SHA1sum があるため、好きなようにプッシュしたりプルしたりできます。それがGitHubのフォークにあるのか、共有リポジトリにプッシュされているのか、それとも何にでも関係ありません...

于 2011-03-22T10:36:30.277 に答える
11

「自分のブランチをレポにプッシュできないのはなぜですか?」というあなたの質問について少し詳しく説明すると、たとえ github によって、すべての人のレポ全体を壊すことなくこれを行うことができたとしても、ほとんどのメンテナは依然としてきれいなレポが数十または数百のブランチのゴミ捨て場に変わるのは喜ばしいことではありません。

これらのブランチを見た他のコントリビューターは、サード パーティからの長い間放棄された半分完成したコントリビューションであっても、上流の開発者がそれらに取り組んでいると想定します。

面白いことに、ワークフローはどちらの方法でもまったく同じですが、上流のレポのある時点で「フォーク」ボタンをクリックするだけです。

比較:

  1. git クローン git://github.com/somebody/someproject
  2. git チェックアウト -b mycoolfeature
  3. ハックハックハック
  4. git push オリジン mycoolfeature
  5. mycoolfeature ブランチのプル リクエストを送信する

  1. github.com/somebody/someproject で「フォーク」をクリックします
  2. git クローン git://github.com/you/someproject
  3. git チェックアウト -b mycoolfeature
  4. ハックハックハック
  5. git push オリジン mycoolfeature
  6. mycoolfeature ブランチのプル リクエストを送信する

フォークを作成する際のオーバーヘッドはまったくありません。

アップストリーム リポジトリのクローンが既にあり、新しいクローンを作成して時間を無駄にしなければならないのではないかと心配している場合は、次のワークフローを試してください。

  1. クリックフォーク
  2. cd someproject (既存のクローン)
  3. git remote add myfork git://github.com/you/someproject
  4. git チェックアウト -b mycoolfeature
  5. ハックハックハック
  6. git push myfork mycoolfeature
  7. mycoolfeature ブランチのプル リクエストを送信する

お役に立てれば!

于 2011-03-28T12:13:34.913 に答える
0

github フォークとは、github リポジトリがあることを意味するため、これに変更をプッシュできます。つまり、行った変更は表示されて github に表示されますが、元の所有者はそれらを含める必要はありません。

フォークを作成すると、書き込み可能なバージョンのリポジトリが提供されます。

この点で、ブランチはフォークとはまったく異なります。フォークは、多くのブランチを持つことができます。

于 2011-03-22T10:28:56.953 に答える