メインコンテンツへスキップ
バージョン: 5.0

GitHub でのプルリクエストの送信

この記事では、Git を使用して RocketMQ に貢献する方法を説明します。

GitHub リモートリポジトリ

前提条件として、このセクションでは、Git を使用して RocketMQ に貢献する理由を簡単に説明します。関連する知識がある場合は、スキップできます。

まず、Git と GitHub について学ぶ必要があります。

考えてみましょう: 開発者の視点から、どのように他の人と協力してプロジェクトを完了しますか?

パッケージ化、圧縮、コピーアンドペーストを想像してみてください。参加者の範囲を 10,000 人以上のレベルに拡大することを考えてみてください。

これがリモートリポジトリのポイントです。開発者は GitHub からリポジトリコードに簡単にアクセスし、開発ブランチをリモートリポジトリに送信して、他の人と通信したり共有したりできます。

1656601484232

では、このパブリックリポジトリを使用して、次に何をしますか?

リモートリポジトリのコードをダウンロードするにはどうすればよいですか?

開発ブランチをリモートリポジトリにコミットするにはどうすればよいですか?

Git 貢献ガイド

apache/rocketmq を個人の GitHub リモートリポジトリにフォークします。

https://github.com/cuser/rocketmq.git # cuser's rocketmq repo[repository] url

注意: cuser は GitHub のユーザー名です。Fork 後、個人のホームページのリポジトリからコピーリポジトリを見つけて、アドレスを確認できます。

② Git を自分でインストールし、ローカルリポジトリにクローンします。

git clone https://github.com/cuser/rocketmq.git # git clone [repo url]

注意:クローンされたローカルリポジトリは、GitHub リポジトリをリモートリポジトリとして使用し、origin という名前が付けられます。

③ 開発ブランチの最新のコードを取得します。

git rebase origin/develop # git rebase [branch]

注意: rebase <branch> 基本的な用語はベーススワップです。リンクされた例を見ると、この手順が必要な理由がわかります。

④ ローカルリポジトリに変更を加えます。

git checkout -b RocketMQ-Vxx.0 # git checkout [-b] [new-branch]
git add /rocketmq/pom.xml # git add [dir/file]
git commit -a -m "pom" # git commit [-all] [-msg] [message]

注意: Git を参照してください。相対パスを使用して、.git と同じディレクトリに切り替えます。

⑤ 変更をリモートリポジトリにプッシュします。

git push --set-upstream apache RocketMQ-Vxx.0   # push branch to https://github.com/cuser/rocketmq-site.git

GitHub でのプルリクエストのコミット

以下に示すように、new-official-website ブランチにプルリクエストを送信する例を取り上げて、プルリクエストのプロセスを説明します。

Git 貢献ガイド を参照して、ローカルリポジトリのブランチを変更し、GitHub リモートリポジトリにプッシュします。

git checkout new-official-website   # git checkout -b new-official-website
git push origin new-official-website # push to https://github.com/cuser/rocketmq-site.git

① GitHub リモートリポジトリを開発ブランチ new-official-website に切り替えます。

② プルリクエストを作成し、「貢献」の下にある「プルリクエストを開く」をクリックします。

③ フォーク間で比較し、リクエストブランチと開発ブランチを選択します。

1656580236831

ベースリポジトリ / ベース : リクエストリポジトリとリクエストブランチ

ヘッドリポジトリ / 比較 : 開発リポジトリとブランチ

リクエストブランチと開発ブランチを正しく選択し、ブランチ所有者から許可を得てからマージをリクエストしてください。

④ プルリクエストの概要を大文字で入力し、プルリクエストの内容を簡単に説明します。

1656589498318

​ プルリクエストを送信する前に、以下を確認してください。

  1. A[GitHub イシュー]( apache/rocketmq: Apache RocketMQ のミラー (github.com) ) プルリクエストに対応するものが作成されていること。
  2. 変更されたコンテンツが コーディングガイドライン プログラミング仕様に準拠していること。
  3. プルリクエストの概要が以下で始まること。[ISSUE #XXX]変更要件を簡単に説明すること。
  4. プルリクエストの変更要件、変更ログ、検証情報を概説すること。プルリクエストのデモ を参照してください。
  5. 完全なテストケースを含むコンテンツを送信し、基本的なチェック、単体テスト、統合テストに合格していること。

⑤「プルリクエストを作成」をクリックして、ブランチのマージをリクエストします。

⑥ この時点で、プルリクエストは apache/rocketmq-site リモートリポジトリに表示され、すべてのコラボレーターがプルリクエストを確認して提案を行うことができます。

コメントに基づいてローカルで変更を加えて複数回コミットできます。マージのリクエストと変更の送信に関する情報は、プルリクエストページ、イシューリスト、RocketMQ メーリングリストに同時に表示され、コミッターにプルリクエストを適時にレビューするよう促します。

プルリクエストのマージ

オープンソースプロジェクトの開発ブランチのマージは、コミッターによって実行されます。

① コントリビューターのプルリクエストをマージします。

git checkout develop    # switch to local develop branch
git pull apache develop # fast-forward to current remote HEAD
git pull --squash https://github.com/cuser/rocketmq.git RocketMQ-Vxx.0 # merge to branch

プルリクエストのマージブランチには、複数のコミットが含まれている場合があります。--squash ディレクティブを使用してコミットを単一のコミットに圧縮することをお勧めします。

マージする前に、マージの競合を解決し、現在のブランチがリモートブランチと同期していることを確認することが重要です。

以下をお読みください。[Git pull]( Git - git-pull ドキュメント (git-scm.com) ) ファーストフォワードなどの情報について学ぶために。

② コミッターのプルリクエストをマージします。

コミッターが自身のプルリクエストをマージする場合は、次のコマンドを実行します。[Git merge]( Git - git-merge ドキュメント (git-scm.com) )

git checkout develop      # switch to local develop branch
git pull apache develop # fast-forward to current remote HEAD
git merge --squash RocketMQ-Vxx.0 # merge to branch

③ 定期的なパッチチェックを行い、組み込みのテストケースを使用してプロジェクトをビルドし、必ず変更ログを変更してください。

④ 上記の手順がすべて完了したら、次の指示に従ってマージを送信し、ブランチの状態を開発者にフィードバックし、プルリクエストを閉じます。

git commit --author="contributor_name <contributor_email>" -a -m "RocketMQ-Vxx.0 description closes apache/rocketmq#ZZ"

プルリクエストを閉じる方法の詳細については、プルリクエストを閉じる を参照してください。

⑤ マージされたブランチを apache/rocketmq リモートリポジトリにプッシュします。

git push apache develop

⑥ プルリクエストが送信されると、GitHub リモートリポジトリに残り、個人の GitHub リポジトリも同時に更新できます。

git push origin develop

注意: squash は開発ブランチのコミット情報を破棄します。

プルリクエストの拒否

プルリクエストの拒否: プルまたはマージは実行されず、プルリクエストの拒否メッセージのみが送信されることを意味します。

git commit --allow-empty -m "RocketMQ-Vxx.0 closes apache/rocketmq#ZZ *Won't fix*"
git push apache develop

GitHub でプルリクエスト #ZZ を閉じる