28

を使用してリモートから取得した後git fetch、次のようなものを使用する必要があります

git merge origin/master

このコマンドも同時に行うかどうかを知りたいgit commitですか? 順番はorigin/master重要ですか?書いてもmaster/originalいいですか?

4

2 に答える 2

27

git merge origin/master2 つのこと (またはエラー) のいずれかを行うことができます。

最初のケースでは、2 つの親を持つ新しいコミットが作成されます: currentHEADと、ref が指すコミットorigin/master(面白いことをしていない限り、これは (へのローカル ポインター) で名前が付けられたブランチである可能性があります) master。という名前のリモートoriginですが、これは完全に慣習的です)。

ツリー レベルのマージが必要ない 2 番目のケースでは、新しいコミットを作成するのではなく、現在チェックアウトされている ref を更新して、 が指しているのと同じコミットを指しorigin/masterます。(これは、早送りマージと呼ばれます。コマンドライン フラグを介してマージする場合、git は、これを常に実行するか、まったく実行しないように指示できます)。

これは、ユーザー向けgit commitの高レベル ( git-parlance のporcelain ) コマンドです。

呼び出しはコミットgit merge master/originalを試みて解決master/originalしますが、これはほぼ確実に (意図的に何かを行っていない限り)と同じにはなりませんorigin/mastermasterという名前のブランチを持つ名前付きのリモートがある場合original、それを 2 番目の親として持つ新しいコミットが作成されます。

git help rev-parsegit が参照名やその他の表記法をコミットに解決しようとする方法を解読するのに役立つ場合があります。

于 2012-06-21T01:25:42.207 に答える
12

これが行うことは、origin/master と呼ばれるブランチを現在のブランチにマージすることです。順序は非常に重要です。originという単語は、リポジトリのクローンを作成した場所、つまりリポジトリの起点を意味します。master という単語は単なるブランチ名ですが、 masterは通常、メイン ブランチ、または他のシステムで呼ばれているトランクブランチとして使用されます。 .

開発の状態によっては、Merge でコミットが必要になる場合があります。履歴が元の履歴から分岐していない場合は、早送りと呼ばれるものを実行できます。実行する必要があるのは、新しい履歴を自分の履歴の上に置くことだけです。開発がオリジンから分岐した場合、競合なしでマージを実行できる場合、マージは完了し、マージと 2 つの親を指定するために新しいコミットが HEAD に記録されます。

さらに、競合が原因でマージを実行できない場合は、競合が存在するという事実を反映するように作業コピーが更新され、競合を修正するときに手動でマージを記録するコミットを行います。

于 2012-06-21T01:08:59.037 に答える