4

forkgithubをフォローするフォークフローについては、少しわかりません。

OpenGrok などの中規模プロジェクトの元のリポジトリに、さまざまなバグのいくつかの小さな独立した修正がある場合はどうなりますか?

  • 関連のない比較的小さなバグ修正ごとに個別のブランチを作成する必要がありますか?

  • から各ブランチを作成するmaster必要がありますか? それとも、関連のない 1 つのブランチを次のブランチから作成できますか?

  • に修正をコミットしmasterますか?

つまり、時間の経過とともに、履歴とすべてを保存したいのですが、しばらくすると、比較的マイナーなバグ修正のための無意味なブランチが多数発生して完全に混乱するのではないかと心配しています.

特定のプロジェクトに関係のない多くの修正を提供する予定であり、開発アプローチの計画を立てようとしています。

4

1 に答える 1

4

github でプロジェクトをフォークし、変更をアップストリームに送信する予定の場合、いくつかのワークフローが考えられます。これは、私が通常従う傾向があるワークフローの 1 つです (フォークした元のリポジトリを remote として呼び出し、リポジトリを として呼び出しますsource) origin

  • が使用するメイン ブランチをフォークしsourceます。masterorigin/my-dev
  • origin/mydev私のすべての変更と主な開発が行われる場所です。
  • 私は定期的にリベースremote/masterしますorigin/master(この手順は冗長ですが、1 つのリモートにすべてを簡単にまとめられる場合があります)。
  • アップストリームから変更を取得したいときはいつでもsource/master、またはリベースorigin/masterをマージします。origin/my-dev
  • アップストリームにパッチまたはバグ修正を提出したい場合は、プルリクエストに使用できる新しい機能ブランチを開始します。私はそれを呼びますorigin/my-feature-1。このブランチを最新origin/master(またはsource/master)から作成します
  • に加えたこの機能の変更をチェリーピックしorigin/my-devますorigin/my-feature-1。この手順の後にテストを実行します。
  • からプル リクエストを送信します。origin/my-feature-1
  • プルリクエストが承認されると、変更がマージされますsource/master(およびマージされorigin/masterます)。
  • origin/master(またはsource/master)から へのマージを実行 しorigin/my-devます。
  • ブランチの存続期間に関する限り、私は通常、存続期間の短いトピックまたはフィーチャー ブランチをアップストリームにマージした後、それらを取り除く傾向があります (ブランチは、特定のコミットを参照する git の軽量ポインターにすぎません)。

このワークフローを何度も繰り返します。

重要な考え方は、あなたのプルリクエストが上流のメンテナに重大な衝突を引き起こしてはならないということです。

アップストリームから貢献D2したい場合の例を示しました。とは、とのリベース バージョンです。のコミットは のアップストリーム コミットであり、 のダウンストリーム コミットです。サフィックスが付いているものはマージです。D3origin/my-devD2'D3'D2D3UsourceDoriginM

視覚的には、次のようになります。

source/master             origin/my-dev
     U1
     U2   Initial-fork
     U3-----------\
     |             \
     |              \------------D1
     |                           D2
     U4 Sync up from upstream    |
     U5-----------\              D3
     |             \             |
     U6             \------------DM4                        origin/feature-1
     |                           |
     |                           |     Starting point of feature-1
     U7------------------------------------------------------------D2'  (Rebased version of D2)
     |                           |                                 D3'  (Rebased version of D3)
     |                           D5                                /
     U8                          D6      Pull-request             /
     |                           |       getting merged upstream /
     UM9--------------------------------------------------------/
     |                           |
     |              Resync       |
     |-------------\ my-dev      |
     U9             \            |
     U10             \-----------DM7
     |                           |
     |                           |
于 2013-04-05T00:49:14.397 に答える