269

他の誰かのプロジェクトからフォークしたプロジェクト (「configUpdate」) のローカル ブランチがあり、それに多くの変更を加えたので、彼らが行った変更を自分のローカル ブランチにマージしたいと考えています。

私はもう試した

git pull --rebase origin configUpdate

しかし、最新の変更を取得していません - どうすれば2つをマージできますか? (ボーナスポイントについても、pull --rebaseコマンドで何をしましたか?)

4

5 に答える 5

402

機能ブランチ(例: 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 はマスターをアップストリームに早送りし、変更を一番上適用します。

于 2011-08-26T06:09:45.380 に答える
88

私はそれが次のことを知りました:

$ git fetch upstream
$ git merge upstream/master
于 2011-08-26T06:29:07.597 に答える
41

ローカル ブランチに切り替える

> git チェックアウト configUpdate

リモート マスターをブランチにマージする

> git リベース マスター configUpdate

競合がある場合は、それらを修正し、競合するファイルごとにコマンドを実行します

> git add [path_to_file/conflicted_file] (例: git add app/assets/javascripts/test.js)

リベースを続行

> git リベース -- 続行

于 2012-06-23T11:48:49.213 に答える
2

これは、Visual Studio を使用する開発者に適用されます。

  1. Git メニュー > ブランチの管理 > remotes/origin をクリックします
  2. master を右クリック > 「origin/master」を [ローカル ブランチ] にマージ

注: master は、最近の git リポジトリでは main と呼ばれています。

ここに画像の説明を入力

于 2021-05-03T21:22:25.203 に答える