1

私はSVNのバックグラウンドから来ています。私はgitリポジトリをフォークして分岐しました。次に、ブランチを変更し (これを と呼びましょうmy-branch)、コミットし、プッシュして、プル リクエストを送信しました。

マスターの変更によって生成された競合が原因で、上流のリポジトリが変更され、私の PR が無効になったことがあります。

ブランチをリベースして競合を解決し、PR を更新するにはどうすればよいですか?

アップストリーム マスターからローカル マスターに変更をフェッチしてから、ブランチをローカル マスターにリベースしてみました。

git checkout master
git fetch upstream
git merge upstream/master
git push origin master
git checkout my-branch
git rebase master

問題は、競合を解決して変更をコミット/プッシュしたときに、これらの変更を行ったかのように、上流からのすべてのコミットも PR に含まれていることです。繰り返しになりますが、ブランチと PR を実際に「リベース」するにはどうすればよいのでしょうか。変更したファイルのみを安全に変更して PR にコミットできます。

4

1 に答える 1

2

これらの規則を持ちましょう:

  • upstreamフォークされたプロジェクトのリモート名
  • origingithubフォークのリモート名です

からの新しいコミットで機能ブランチを更新する正しいワークフローは次のupstream/masterとおりです。

  • git checkout my-branch// 機能ブランチに切り替えます
  • git fetch --all// 宣言されたすべてのリモートから新しいコミットを取得します
  • git rebase upstream/master// 機能ブランチを上流/マスターの最後のコミットにリベースします
  • git push -f origin my-branch// リモートを上書きしますmy-branch(リベースはコミットを書き換えるため、必須です)

の新しいコミットで PR を更新する必要があります。my-branch

于 2013-06-03T14:06:37.083 に答える