1

これscratchがリモートリポジトリでありbough、このリポジトリのブランチであるとします。これは、によって印刷される行の1つが。git branch -rになることを意味しますscratch/bough。今なら私は実行します

% git branch -t twig scratch/bough
Branch twig set up to track remote branch bough from scratch.

次に、の内容を調べる.git/configと、新しいセクションが追加されていることがわかります。

[branch "twig"]
        remote = scratch
        merge = refs/heads/bough

属性の値により、mergeファイルがあると思われるかもしれません.git/refs/heads/boughが、実際にはそのようなファイルはありません。しかし、今はファイルがあり.git/refs/heads/twigます:

.git/refs
├── heads
│   ├── master
│   └── twig
├── remotes
│   └── scratch
│       └── HEAD
└── tags

これは、その行merge = refs/heads/boughがなぜそう思ったのかを意味しないか(IOW、値が.git既存のファイルの相対的なパスを参照していること)、またはgitにかなり重大なバグがあることを認識します。

したがって、前者が当てはまると仮定しましょう。では、この線merge = refs/heads/boughは実際にはどういう意味ですか?

4

2 に答える 2

4

このmerge行は、ローカルリポジトリではなく、リモートリポジトリに存在する参照を参照しています。のローカルアップストリームブランチtwigは、実際にはになりますrefs/remotes/scratch/bough

また、記録として、すべての参照が。内のファイルとして存在するわけではありません.git/refs.git/packed-refs同様に住んでいるrefをパックすることができます。

于 2013-03-07T22:15:29.757 に答える
1
[branch "twig"]
    remote = scratch
    merge = refs/heads/bough

このブロックは、次のことを意味します。ローカルブランチは、リモートにtwigアップストリームブランチを持つように設定されています。つまり、リモートトラッキングブランチです。たとえば、上にいるときに押すと、にプッシュされます。boughscratchscratch/boughtwigscratch/bough

于 2013-03-07T22:15:55.037 に答える