他の誰かのプロジェクトからフォークしたプロジェクトのローカル ブランチ ("configUpdate") があり、これに多くの変更を加えたので、その変更を自分のローカル ブランチにマージしたいと考えています。
私はもう試した
git pull --rebase origin configUpdate
しかし、最新の変更が取得されていません。どうすれば 2 つをマージできますか? (ボーナス ポイントとして、コマンドで何を行ったか教えてくださいpull --rebase
)
ベストアンサー1
機能ブランチ(例configUpdate
) から以下を実行します:
git fetch
git rebase origin/master
または短縮形:
git pull --rebase
なぜこれが機能するのか:
git merge branchname
ブランチから新しいコミットを取得しbranchname
、それを現在のブランチに追加します。必要に応じて、自動的に「マージ」コミットを追加します。git rebase branchname
ブランチ から新しいコミットを取得しbranchname
、それを変更の「下」に挿入します。より正確には、現在のブランチの履歴を の先端に基づいて変更しbranchname
、その上にあなたが行った変更をすべて反映します。git pull
は基本的に と同じですgit fetch; git merge origin/master
。git pull --rebase
は基本的に と同じですgit fetch; git rebase origin/master
。
git pull --rebase
では、ではなくを使用するのはなぜでしょうかgit pull
? 簡単な例を示します。
新しい機能の開発に取り組み始めます。
変更をプッシュする準備が整うまでに、他の開発者によっていくつかのコミットがプッシュされています。
(マージを使用する)の場合
git pull
、変更内容は、自動的に作成されたマージ コミットに加えて、新しいコミットによって埋められます。代わりに
git pull --rebase
、git はマスターをアップストリームに高速転送し、その上に変更を適用します。