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

このページは、メンテナー(私たち自身の変更や他の人の変更をアップストリームリポジトリにマージする人たち)のためのものです。

あなたはメンテナーなので、開発ワークフローの基本的なことは完全に把握しているはずです。

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

アップストリームのリモートに怖い名前を付けると、それが読み取り/書き込みリモートであることを思い出させるのに役立ちます。

git remote add upstream-rw git@github.com:scikit-image/scikit-image.git
git fetch upstream-rw

変更の統合#

トランク(upstream-rw/main)に取り込む必要がある変更があるとします。

変更は、あなたが現在いるブランチにあります。たとえば、誰かの変更を次のように見ています

git remote add someone https://github.com/someone/scikit-image.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ブランチがupstream-rwリポジトリのmainブランチにプッシュされます。