24

誰かが一連のプルリクエストをgithubの私のリポジトリに送信しました。残念ながら、すべてのファイルのすべてのプルリクエストを一度に送信するのではなく、いくつかのプルリクエスト(ファイルごとに1つ)でこれを実行しました。

それらを1つにマージするように要求した後、応答がないので、Git Bashでこれらのプルリクエストを自分でマージしようとしていますが、運が悪いので、マージボタンを使用してコミットを行うことができてとてもうれしいです。 Windows上のGitHubプログラムですが、それ以上のものはありません。私はgitシェルを本当に理解していません-ですから、誰かがこれらのプルリクエストをマージする方法のプロセスを経験することができれば(とにかくそれらのどれも競合しません)、それは大いにありがたいです。

4

1 に答える 1

29

3つのブランチbA、bB、bCにある3つのプルリクエストA、B、Cがあるとします。そしてあなたのメインブランチはマスターです。

まず、彼のすべてのブランチをマージせずにローカルリポジトリに移動します。 git fetch his-repo

したがって、リポジトリには4つのブランチがあります。master, bA, bB, bC

マスターからブランチを作成しますf-merge-his-repo

git checkout master これにより、f-merge-his-repoがマスターから分岐するようになります。

git checkout -b f-merge-his-repo これにより、ブランチf-merge-his-repoが作成され、それに切り替わります。

これで、現在f-merge-his-repoを使用しているので、次のコマンドを使用します。

git merge bA

git merge bB

git merge bC

競合がある場合は(手動またはmergetoolを使用して)修正する必要がありますが、競合はないので、これでbA bB and bCすべてが解決されたと言えます。f-merge-his-repo

f-merge-his-repo次に、マスターブランチにマージするだけです

最初にマスターブランチに切り替える必要があります。 git checkout master

そして、f-merge-his-repoをマージします git merge f-merge-his-repo

または、早送りなしのマージを希望する場合 git merge --no-ff f-merge-his-repo

結局、これらのブランチを削除します。

git branch -d bA

git branch -d bB

git branch -d bC

git branch -d f-merge-his-repo

あなたは本当にpro-git ここを見てみるべきです。これは、日常業務でgitに必要なすべてを示したシンプルな本であり、git bashに慣れると、これらのgit GUIのすべてがイライラすることに気付くでしょう(ログの表示を除いて、私はgitkを使用して表示します)ログを分析します)

最後のヒント:

覚えておくのに良い方法git mergegit rebase

Mergeは別のブランチ現在のブランチにマージしています(もちろん、両方のブランチに名前を付けることができますが、デフォルトの構文はブランチを現在のブランチにマージします)

したがって、常にメインブランチに切り替えて、他のブランチをマージする必要があります

git checkout master

git merge their-branch --no-ff また git merge their-branch

そして、リベースは現在のブランチを別のブランチ(通常はメインブランチ)にリベースしています

git checkout feature-branch

git rebase master

于 2013-01-18T02:31:54.590 に答える