web-dev-qa-db-ja.com

Githubフォークから変更を取り込む

誰かが私のGithubプロジェクトをフォークして、いくつかの変更を加えました。変更を上流のバージョンにマージするにはどうすればよいですか?

また、特定のコミットだけを取得することは可能ですか?

私が探しているのは、ブランチ全体ではなく特定のコミットをプルする方法があるかどうかです。

40
gregghz

単一のコミットをプルすることは簡単な選択であり、コミット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現在のブランチにそれぞれのコミットをもたらします。

47
Dustin

Githubの/ forkqueueを使用してみてください。そこでコミットをフォークにマージできます。

または「ネットワーク」タブに移動し、「フォークキュー」を選択します

1
frank_neff

hub と呼ばれる素晴らしいツールがあります。これは、プルリクエストをクリーンアップするための便利なツールを提供し、一般に「gitでの成功に役立ちます」.

このコンテキストで役立つコマンドは次のとおりです。

git am -3 <url>

これにより、リモートリポジトリをフェッチすることなく、URLから変更を取得し、そのコミット/変更を現在のローカルgitに適用できます(大規模なリポジトリで便利です)。

取得したいコミットのgitウェブページでこのコマンドを使用すると、gitでこのコミットが発生します。さらに便利です:コミットの作成者は保持され、置き換えられません(git rebaseを使用する場合のように)。これをリポジトリにプッシュすると、変更はyouによってコミットされますが、元の作成者によって作成されます。

このトピックに関する非常に優れたリソースは、Nathaniel Talbottによる this ガイドです。これは、githubの「悪意のある」マージプルリクエストボタンに依存するのではなく、プルリクエストを処理する優れたワークフローを示しています。

1
Mr. Anderson