1. ホーム
  2. ギット

[解決済み】GitHubでのフォークとブランチの比較

2022-03-26 23:20:33

質問

githubプロジェクトをフォークすることと、githubプロジェクトのブランチを作成することのメリットとデメリットについて詳しく知りたいのですが。

フォークをすると、元のプロジェクトの共同作業者リストに入る必要がないので、私のバージョンのプロジェクトは元のプロジェクトとより隔離されたものになります。私たちは自社でプロジェクトを開発しているので、共同作業者として人々を追加することに問題はありません。しかし、プロジェクトをフォークすることで、メインのプロジェクトに変更をマージすることが難しくなるのかどうかを理解したいのです。つまり、ブランチすることで2つのプロジェクトを同期させることが容易になるのかどうか。言い換えれば、ブランチしたときにメインプロジェクトの私のバージョンとメインプロジェクトの間で変更をマージしたりプッシュしたりするのはより簡単なのでしょうか?

解決方法は?

特定のプロジェクトの共同作業者として登録されていないため、常にブランチを作成したり、既存のブランチをプルしてそこにプッシュバックすることができません。

フォークとはクローン以外の何ものでもない GitHubのサーバー側で :

  • 直接プッシュバックすることができない
  • フォークキュー マージ要求を管理するために追加された機能

によって、フォークを元のプロジェクトと同期させたままにしておくのです。

  • 元のプロジェクトをリモートとして追加する
  • その元プロジェクトから定期的に取得する
  • そのフェッチから更新された興味のあるブランチの上に、現在の開発をリベースします。

リベースすることで、あなたの変更が単純なものであることを確認でき (マージの衝突が起こらない)、元のプロジェクトのメンテナがあなたのパッチを彼のプロジェクトに含めることを望む場合、pull 要求をより容易にすることができます。

を使用しても、コラボレーションを可能にすることが目的です。 ダイレクト 参加は必ずしも可能ではありません。


GitHub側でクローンするということは、今までの "central" リポジトリ ("central" を複数の共同作業者から見えるようにしたもの)。

のコラボレーターとして直接追加できるのであれば、それを利用することができます。 を使えば、別のプロジェクトをフォークで管理する必要はありません。

マージの経験はほぼ同じでしょうが、間接的なレベルが追加されます (最初にフォークでプッシュし、次にプルを要求します。元のレポの進化により、早送りのマージが早送りでなくなるリスクもあります)。

つまり、正しいワークフローは git pull --rebase upstream (上流からの新しいコミットの上で自分の作業をリベースする)、次に git push --force origin というのは、自分のコミットが常に元の (上流の) リポのコミットの上にあるように履歴を書き換えるためです。

こちらもご覧ください。