メンテナーのワークフロー#
このページはメンテナー向けです — 私たち自身または他の人々の変更をアップストリームリポジトリにマージする私たちです.
メンテナーとして、開発ワークフローの基本的なことを完全に把握しています。
リポジトリをアップストリーム リポジトリにリンクするの手順では、アップストリーム リポジトリへの読み取り専用アクセス権を持つリモートを追加します。メンテナーとして、読み書きアクセス権を持っています。
アップストリームのリモートに恐ろしい名前を付けて、それが読み書き可能なリモートであることを思い出させるのは良いことです:
git remote add upstream-rw [email protected]:matplotlib/matplotlib.git
git fetch upstream-rw
変更の統合#
トランク ( upstream-rw/main
) に移動する必要があるいくつかの変更があるとします。
変更は、現在使用しているブランチにあります。たとえば、誰かの変更を次のように見ています。
git remote add someone https://github.com/someone/matplotlib.git
git fetch someone
git branch cool-feature --track someone/cool-feature
git checkout cool-feature
これで、変更が上流に組み込まれるブランチにいます。このセクションの残りの部分は、このブランチにいることを前提としています。
いくつかのコミット#
コミットが少ない場合は、アップストリームへのリベースを検討してください。
# Fetch upstream changes
git fetch upstream-rw
# rebase
git rebase upstream-rw/main
リベースを実行してそれをプッシュする場合、github は変更が既にマージされていることを検出できないため、手動で github プル リクエストを閉じる必要があることに注意してください。
コミットの長いシリーズ#
より長い一連の関連するコミットがある場合は、代わりにマージを検討してください。
git fetch upstream-rw
git merge --no-ff upstream-rw/main
マージは github によって検出され、関連するすべてのプル リクエストを自動的に閉じる必要があります。
上記に注意してください--no-ff
。これにより、git は早送りではなくマージ コミットを行うようになり、これらの一連のコミットがトランクから分岐してから、トランク上で直接行われたように見えるのではなく、マージでメインの履歴に再結合されます。
履歴を確認する#
どちらの場合でも、履歴が適切であり、適切なコミットがあることを確認する必要があります。
git log --oneline --graph
git log -p upstream-rw/main..
上記の最初の行は、履歴グラフのテキスト表現を使用して、履歴をコンパクトな方法で示しているだけです。2 行目は、トランク ( ) から到達できるものを除外しupstream-rw/main
、現在の HEAD から到達できるものを含むコミットのログを示します (..
最後に で示されます)。したがって、トランクと比較して、このブランチに固有のコミットが表示されます。この-p
オプションは、これらのコミットの差分をパッチ形式で表示します。
トランクへのプッシュ#
git push upstream-rw my-new-feature:main
my-new-feature
これにより、このリポジトリのmain
ブランチがリポジトリのブランチにプッシュされupstream-rw
ます。