51

さまざまな情報源から、より細かい制御が可能になるため、単にプルするよりもフェッチしてからマージする方が通常は良い考えであると読みました。とは言っても、実際にそれを行う方法をまだ見つけていません。適例:

私の GitHub リポジトリの master ブランチの 1 つで、コードの一部に小さな変更が加えられました。取得できましたが、違いを実際にローカルの master ブランチ にマージする方法がわかりません。git branch私が持っているすべてのローカルブランチをリストしますが、マージ先を示すものは何もありません。

それで、それは単にまたはのようなものですgit merge mastergit merge origin/master?私は何が欠けていますか?

4

4 に答える 4

56

git merge origin/master動作するはずです。master通常は追跡ブランチであるため、そのブランチから行うこともでき、git pullフェッチとマージが行われます。

masterに反映されていないローカルの変更がある場合は、コミットが「最上位」であることを確認することをおorigin勧めします。git rebase origin/master

于 2013-01-25T00:24:28.443 に答える
16

私は通常これを行います:

git merge --ff-only @{u}

つまり、「上流の追跡ブランチからのみ早送りマージを行う」ということです。master失敗した場合、アップストリームではない何かを導入したことがわかるので、それは素晴らしいことです。ff入力しやすくするために、エイリアスをにしています。

変更があり、単にそれらをマージしたい場合は、次のことができます。

git merge @{u}

これは上流のブランチにマージされます。ただし、よりクリーンな履歴が必要な場合 (および「'origin/master' を 'master' にマージする」コミットを避けたい場合) は、代わりにリベースを検討することをお勧めします。

git rebase @{u}

もちろん、これらの例のorigin/master代わりに使用できます。@{u}

于 2013-01-25T02:04:21.113 に答える
8

コマンド

git pull $some_url

と同等です

git fetch $some_url
git merge FETCH_HEAD

詳細については、git-pull(1) man ページ、特に説明の最初の 2 つの段落も参照してください。

于 2016-09-16T21:00:41.980 に答える