Githubプロジェクトをフォークすることとgithubプロジェクトのブランチを作成することの長所と短所についてもっと知りたいです。
私がオリジナルプロジェクトの共同編集者リストにいる必要はないので、フォークすることで私のバージョンのプロジェクトはオリジナルのものからより隔離されたものになります。私たちは社内でプロジェクトを開発しているので、人々を共同編集者として追加することに問題はありません。しかし、プロジェクトを分岐することでマージの変更をメインプロジェクトに戻すのが難しくなるかどうかを理解したいと思います。つまり、分岐によって2つのプロジェクトの同期が簡単になるのではないかと思います。つまり、分岐したときにメインプロジェクトのバージョンとメインプロジェクトの間で変更をマージしてプッシュする方が簡単ですか。
特定のプロジェクトの共同編集者として登録されていないため、常にブランチを作成したり、既存のブランチをプルしてプッシュバックすることはできません。
分岐はGitHubサーバー側のクローンに過ぎません:
次のようにして、フォークを元のプロジェクトと同期させます。
リベースを使用すると、変更を簡単に(マージの競合を処理しないように)確実に行うことができます。元のプロジェクトの管理者が自分のプロジェクトにパッチを含める場合は、引っ張り要求がより簡単になります。
目標は、コラボレーションを許可することです。直接参加は必ずしも可能ではありません。
あなたがGitHub側でクローンを作成するという事実はあなたが今いることを意味しますtwo "central"レポジトリ( "central"は "共同"から見られる).
oneプロジェクトの共同編集者として直接追加できるのであれば、他のプロジェクトをフォークで管理する必要はありません。
マージエクスペリエンスはほぼ同じですが、追加の間接参照レベルがあります(最初のフォークをプッシュし、次にプルを要求します。元のリポジトリの進化のリスクにより、早送りマージは早送りできなくなります)。 。
つまり、正しいワークフローはgit pull --rebase upstream
(上流からの新しいコミットの上に作業をリベースする)、そしてgit Push --force Origin
の順になり、自分のコミットが常にコミットの上になるように履歴を書き換えることです。元の(上流の)リポジトリから。
また見なさい:
高レベルの違いは次のとおりです。
それはGitの一般的なワークフローと関係があります。メインプロジェクトのリポジトリに直接プッシュすることはできないでしょう。たとえば、GitHubプロジェクトのリポジトリがブランチベースのアクセス制御をサポートしているかどうかはわかりません。たとえば、マスタブランチへのプッシュを許可する権限を誰にも与えたくない場合があります。
一般的なパターンは次のとおりです。
これがないと、公共のプロジェクトが誰かに直接自分のコミットをプッシュさせることは珍しいことです。
Forkingは既存のリポジトリから全く新しいリポジトリを作成します(単にgitHub/bitbucketでgit cloneをするだけです)
フォークが最もよく使用されます。「分割」の目的が論理的に独立したプロジェクトを作成することであり、それがその親と再結合することは決してないかもしれないときです。
ブランチ戦略は既存の/作業中のリポジトリの上に新しいブランチを作成します
ブランチは、ブランチをOriginとマージする目的で、機能を介して作業するための一時的な場所として作成される場合に最も使用されます。
より具体的には: - オープンソースプロジェクトでは、誰がリポジトリにプッシュできるかを決めるのはリポジトリの所有者です。しかし、オープンソースのアイデアは、誰でもプロジェクトに貢献できるということです。
この問題はフォークによって解決されます。開発者がオープンソースプロジェクト内の何かを変更したいときはいつでも、公式リポジトリを直接複製することはしません。代わりに、彼らはそれをフォークしてコピーを作成します。作業が完了すると、リポジトリの所有者が変更を確認してそれらを自分のプロジェクトにマージするかどうかを決定できるように、プル要求を行います。
基本的には分岐は機能分岐と似ていますが、分岐を作成する代わりにリポジトリのフォークを作成し、マージ要求を実行する代わりにプル要求を作成します。
以下のリンクは、よく説明された方法で違いを提供します。
https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/