メンテナーのワークフロー#

このページはメンテナー向けです — 私たち自身または他の人々の変更をアップストリームリポジトリにマージする私たちです.

メンテナーとして、開発ワークフローの基本的なことを完全に把握しています。

リポジトリをアップストリーム リポジトリにリンクするの手順では、アップストリーム リポジトリへの読み取り専用アクセス権を持つリモートを追加します。メンテナーとして、読み書きアクセス権を持っています。

アップストリームのリモートに恐ろしい名前を付けて、それが読み書き可能なリモートであることを思い出させるのは良いことです:

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ます。