4

GitHub でプロジェクトをフォークし、いくつかの変更をプッシュし、プル リクエストを開きました。メンテナーはサインオフし、(私のコミットをマージするのではなく) 新しいコミットで変更を適用したため、コミット グラフは次のようになりました。

* 03a0687 (origin/master) frotz: Corrected MAN_PREFIX
| * 11d3e98 (HEAD, master, jleedev/master) frotz: Corrected MAN_PREFIX
|/  
* 9c3dd1a yajl: use direct patch from Github.

明らかに、ローカル ブランチをリベースするか、強制的に更新する必要があります。その後、GitHub のフォークに強制的にプッシュする必要がありますか? 強制更新は自動であってはならないので、私は主に尋ねています。あなたの変更がメンテナーによって厳選された場合、これは標準的なことですか?

4

1 に答える 1

8

最も簡単な方法は、常にトピック ブランチで作業することです。そうすれば、フォーク マスター ブランチは常にアップストリームのように見えるため、アップストリームに変更が含まれたら、常に同じことを行い、トピック ブランチを削除するだけです。

アップストリームが変更をマージすると、マスター ブランチとトピック ブランチの両方に同じコミットが含まれるため、トピック ブランチを安全に削除できます。アップストリームがコミットをチェリーピックする場合、変更がアップストリームに加えられたことを確認した後、トピックブランチを削除できます。

これのもう 1 つの主な利点は、master に対してトピック ブランチを簡単にリベースできることです。手動の競合解決なしにアップストリームにパッチを適用できない場合、リベースまたはマージして競合解決を自分で行うように求められることがあります。また、あなたがフォークを作成した後にコミットし、少量のコミットのみにマージコミットを導入したくなかったため、彼らはあなたのコミットをチェリーピックしたのではないかと思います。厳選することで、彼らは履歴をより直線的でクリーンに保ちました。あなたが頻繁にリベースしていた場合、それは彼らにとって早送りのマージだけだったかもしれず、チェリーピックする必要はありません.

今何をすべきかという質問については、ローカルブランチを強制的に更新してから、フォークに強制的にプッシュバックすることが唯一の現実的なオプションです。

于 2011-02-28T22:45:09.453 に答える