誰かが私のGithubプロジェクトをフォークし、いくつかの変更を加えました。変更をアップストリームバージョンにマージするにはどうすればよいですか?
また、特定のコミットだけを取り込むことは可能ですか?
私が探しているのは、ブランチ全体ではなく、特定のコミットをプルする方法があるかどうかです。
誰かが私のGithubプロジェクトをフォークし、いくつかの変更を加えました。変更をアップストリームバージョンにマージするにはどうすればよいですか?
また、特定のコミットだけを取り込むことは可能ですか?
私が探しているのは、ブランチ全体ではなく、特定のコミットをプルする方法があるかどうかです。
単一のコミットをプルすることは、チェリーピックであり、コミットIDを書き換えます(そして、作成者を保持しながら、あなたをコミッターとしてマークします)。ただし、プロセスは非常に簡単です。
git fetch git://github.com/user/project.git
git cherry-pick <SHA-COMMIT-ID>
リポジトリログからSHAを取得します。次に例を示します。
git log --oneline
b019cc0 Check whether we have <linux/compiler.h>.
0920898 Include <linux/compiler.h> before including <linux/usbdevice_fs.h>.
cbf0ba1 Add DLT_DBUS, for raw D-Bus messages.
77ed5cd Libnl 2.x returns its own error codes, not errnos; handle that.
あなたと一緒git cherry-pick 0920898
にあなたの現在のブランチにそれぞれのコミットを持ってきてください。
ハブと呼ばれる素晴らしいツールがあります。これは、プルリクエストをクリーンアップするための便利なツールを提供し、一般的に「gitで勝つのに役立ちます」。
このコンテキストで役立つコマンドの1つは、次のとおりです。
git am -3 <url>
これにより、URLから変更を取得し、リモートリポジトリ(大規模なリポジトリで便利です)をフェッチしなくても、そのコミット/変更を現在のローカルgitに適用できます。
取得したいコミットのgitWebページでこのコマンドを使用すると、最終的にgitにこのコミットが含まれることになります。さらに便利です:コミットの作成者は保持され、あなたによって置き換えられることはありません(あなたが使用する場合のようにgit rebase
)。これをリポジトリにプッシュすると、変更はあなたによってコミットされますが、元の作成者によって作成されます。
このトピックに関する非常に優れたリソースは、NathanielTalbottによるこのガイドです。これは、githubの「悪意のある」マージプルリクエストボタンに依存する代わりに、プルリクエストを処理するための優れたワークフローを示しています。
githubで/forkqueueを使用してみてください。そこで、コミットをフォークにマージできます。
または、[ネットワーク]タブに移動し、[フォークキュー]を選択します