2

git push を実行すると、3 つのブランチが含まれていることがわかります。1) 私が取り組んでいるローカル ブランチ、たとえば「foo1」 2) ローカルのリモート追跡ブランチ「origin/foo2」(プッシュ/プル後、常にリモート foo3 と同じコミットにある) 3) 'foo3' inリモートレポ。当然、通常はすべて foo と呼ばれますが、git を正しく理解し、ここでこの質問をすることができるように、別の名前が必要です。foo2 を指定できる場所がわかりません。私がする時

git push origin foo1:foo3

そして、それを私の .git/config に入れます

[branch "master"]
remote = origin
merge = refs/remotes/origin/foo2

ポイント 1 と 3 は問題ありませんが、ローカル リポジトリに origin/foo2 がありません。私は何が欠けていますか?または、私のリモート追跡ブランチは常にリモートとまったく同じ方法で名前が付けられているという答えです-それは私にとっては問題ありません-私はgitを正しく理解したいだけです.

git-push のマニュアルでは、私の例では、ポイント 1 と 3 の 2 つの参照 (refspec src と dst) についてのみ説明しています。リモートレポのdstブランチが更新された後、ローカルのリモート追跡参照も更新された後、マニュアルはどこでそれについて話していますか?

4

2 に答える 2

1

git push に 3 つのブランチが表示されません。2つだけ

あなたが説明しているのfoo2は git pull (git fetch + git merge) またはgit rebase:
(からgit config)

branch.<name>.merge

とともにbranch.<name>.remote、指定されたブランチの上流ブランチを定義します。
どのブランチをマージするかを指示git fetch/git pull/git rebaseし、git push にも影響を与えることができます (「参考文献」を参照push.default)。
branch<name>にいるとき、 git fetch にデフォルトの refspec をマージするようにマークするように指示しますFETCH_HEAD。値は refspec のリモート部分のように処理され、" branch.<name>.remote" で指定されたリモートからフェッチされた ref と一致する必要があります。

マージ情報はgit pull(最初に を呼び出すgit fetch) によって使用され、マージ用のデフォルト ブランチが検索されます
このオプションを指定しないと、git pullデフォルトで最初にフェッチされた refspec がマージされます。
タコのマージを取得するには、複数の値を指定します。

git1.7.10以降では、デフォルトのプッシュ ポリシーが に変更さmatchingれる可能性があることに注意してupstreamください (「の結果はgit push origin?」を参照) 。。_branch.<name>.mergebranch.<name>.remotegit push

于 2012-04-08T19:46:48.903 に答える
0

そうです、リモート追跡ブランチは、リモート リポジトリのブランチと同じ名前です。そうしないと、多少混乱するでしょう。

したがって、単純にリモートのorigin/foo3ブランチを表します。を実行すると、リモートと適切に同期されます。を実行しているときは、実際に実行していることに注意してください。foo3origingit fetchgit pullgit fetch ; git merge

実行中は、ローカル ブランチをリモート ブランチにgit push origin foo1:foo3プッシュします。したがって、あなたの場合、 branch を指定しても意味がありません。foo1origin/foo3foo2

于 2012-04-08T19:50:05.253 に答える