13

そこで、githubでプロジェクトのクローンを作成し、パッチを修正しました。Imがgitで作業するのはこれが初めてなので、Imはそれをオンラインにするための最良の方法を見つけようとしています。

githubで自分の(複製された)リポジトリをチェックアウトすると、masterという1つのブランチしかありませんでした。ブランチmyfixを作成しました。これは、バグの修正である1つのコミットを保持します。

  • すべてをgithubのクローンプロジェクトにプッシュする必要がありますか?これにより、その単一の修正コミットを含むgithubプロジェクトにブランチmyfixが作成されると思います。
  • myfixmasterブランチにマージし、 myfixを削除してから、すべてをプッシュする必要がありますか?

オンラインで検索する場合、一般的/良い習慣は、マスターをそのままにして、純粋に実際の/元のパブリックプロジェクトリポジトリからプルするために使用することです(つまり、他の人が貢献を受け入れたなど)。しかし、他の人は他の戦略を提案します:

  • アップストリームブランチを作成し、クリーンで準備の整ったコントリビューションをそこに置いて、他の人が他の不完全/実験的なブランチと混同しないように簡単に見つけられるようにします(これらが非常に不完全だった場合、なぜこれらがオンラインになるのだろうか)。
  • ダウンストリームブランチを作成し、オフラインマージのためにここで他の変更をプルします。

上記の2つに従うと(現在は少しやり過ぎだと感じていますが)、マスターブランチはどのような目的を果たしますか?

Gitは、上記の任意の組み合わせ(またはすべて)を実行できます。これは、自分の作品を他の人に簡単に見せるための方法について少し混乱させてくれます。そのような「一般的な」ワークフローはありますか?それとも、それはすべての人であり、修正されたバグの問題追跡システムの特定のブランチ(プッシュされた)に特定のリビジョンを投稿しますか?

4

2 に答える 2

7

リポジトリのクローンを作成すると、Gitはマスターブランチに対して記述したことを実行するリモートトラッキングブランチを自動的に作成します。これらのリモートトラッキングブランチは、次のコマンドで一覧表示できます。

git branch -r

アップストリームリポジトリの追跡はすでに行われているため、通常はマスターブランチを使用してプロジェクトのメインラインを変更します。これがあなたの特定の状況で私がすることです:

  • myfixブランチをクローンのmasterにマージします。(これを「トピックブランチ」で実行することをお勧めします。)
  • マスターブランチをGithubにプッシュします。(元のリポジトリをフォークしたのか、それともクローンしただけなのかは不明です。次のステップを実行するには、元のリポジトリをフォークして独自のコピーを作成する必要があります。)
  • フォークしたリポジトリの所有者にGithubプルリクエストを送信します。
于 2009-12-08T22:20:46.000 に答える
5

Githubを使用すると、他のリポジトリの所有者にプルリクエストを送信できます。リクエストには、興味深い変更を見つける場所が記載されています。これは、すべての変更を特定の有名なブランチに保持する必要がないことを意味します。

他の人に簡単にパッチを適用できるようにすると、パッチが受け入れられる可能性が高くなります。そのため、共通の参照ポイントとしてクリーンなマスターを維持し、マスターから離れたブランチに変更を加えます。ブランチに焦点を絞ってください。1つのブランチに11の新機能を積み上げるのではなく、きれいにできる場所に別々に置いてください。

于 2009-12-08T22:12:41.303 に答える