6

私は正直なところ、の出力の詳細なドキュメントを見つけることができませんgit remote show(確かにmanページにはありません)

特に、Localセクションの明確で正確な説明をいただければ幸いです。

私が混乱していると思うものの例:

ここに、klasoriginの2つのリモコンと、それらが生成する出力があります。

> git remote show klas
* remote klas
  Fetch URL: ..\klasrepo
  Push  URL: ..\klasrepo
  HEAD branch: master
  Remote branches:
    experiment  tracked
    feature     tracked
    master      tracked
    pu          tracked
    stashbranch tracked
  Local branch configured for 'git pull':
    pu merges with remote pu
  Local refs configured for 'git push':
    experiment pushes to experiment (fast-forwardable)
    feature    pushes to feature    (fast-forwardable)
    master     pushes to master     (fast-forwardable)
    pu         pushes to pu         (up to date)
> git remote show origin
* remote origin
  Fetch URL: C:/Temp/git/.\barerepo.git
  Push  URL: C:/Temp/git/.\barerepo.git
  HEAD branch: experiment
  Remote branches:
    experiment tracked
    master     tracked
  Local branches configured for 'git pull':
    experiment  merges with remote experiment
    master     rebases onto remote master
  Local refs configured for 'git push':
    experiment pushes to experiment (up to date)
    master     pushes to master     (fast-forwardable)

実験マスターが両方 の下にリストされていることに注意してくださいlocal refs configured for 'git push'。どういう意味ですか?マスターと実験をそれぞれ原点/マスター原点/実験を追跡するように構成しました(そしてpuはklas / puを追跡します)。

私のローカル機能ブランチは何も追跡するように設定されていませんが、それでも下にリストされていますlocal refs configured for 'git push'(唯一の接続は同じ名前のようで、別の非追跡ブランチfooは言及されていません)。機能git push上にある間-ほとんど「早送り可能」ではありません。fatal: The current branch feature has no upstream branch.

下にリストされているローカルブランチの基準はlocal refs configured for 'git push'、同じ名前のリモートブランチがたまたま存在するということのようです。

参考のために:

> git branch -vva
  experiment                0cf7b2a [origin/experiment] added rand content 82 to .\rand_content.txt
* feature                   4b25f46 added rand content 62 to bar.txt
  foo                       40aee50 added rand content 17 to .\rand_content.txt
  master                    4b25f46 [origin/master] added rand content 62 to bar.txt
  pu                        44ad10b [klas/pu] added rand content 51 to doo.txt
  remotes/klas/experiment   1f4e89b app
  remotes/klas/feature      884e953 added rand content 80 to bar.txt
  remotes/klas/master       57877c1 added in tobias repo
  remotes/klas/pu           44ad10b added rand content 51 to doo.txt
  remotes/klas/stashbranch  8678cf0 added rand content 44 to .\rand_content.txt
  remotes/origin/HEAD       -> origin/master
  remotes/origin/experiment 0cf7b2a added rand content 82 to .\rand_content.txt
  remotes/origin/master     4b25f46 added rand content 62 to bar.txt
> git config --list --local | select-string 'branch|remote'
remote.origin.url=C:/Temp/git/.\barerepo.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.master.rebase=true
remote.klas.url=..\klasrepo
remote.klas.fetch=+refs/heads/*:refs/remotes/klas/*
branch.experiment.remote=origin
branch.experiment.merge=refs/heads/experiment
branch.pu.remote=klas
branch.pu.merge=refs/heads/pu
> git --version
git version 1.8.1.msysgit.1
4

1 に答える 1

4

これはGit1.8.1のバグのようです。

Gitソースコード(具体的にはremote.cおよびbuiltin/remote.c)をスキミングすると、「「gitpush」用に構成されたローカル参照」の下のリストは次のように計算されます。

  1. 構成されたプッシュrefspecを収集します。
    • 読み取り.git/remotes/<remotename>(廃止された構成ファイル。を参照git help repository-layout
    • 読み取り.git/branches/<branchname>(別の廃止された構成ファイル)
    • remote.<remotename>.push構成アイテムを調べます
  2. ステップ1で何も見つからなかった場合は:、唯一のプッシュrefspecとして使用します
  3. 収集されたプッシュ参照仕様に一致するすべての{ローカル、リモート}ブランチの組み合わせを検索します

branch.<branchname>.remote上記のアルゴリズムは、、、branch.<branchname>.mergeまたはに注意を払っていないことに注意してくださいpush.default

一般的な使用パターンでは、上記のアルゴリズムのステップ1は、構成されたrefspecを検出しないため、:使用されます。そのrefspecは単純に一致するrefspecであるため、通常の使用法では、ローカルリポジトリとリモートリポジトリの両方に名前が付けられたブランチがある場合git remote show <remotename>は常に出力されます。<branchname> pushes to <branchname><branchname>

于 2013-03-26T22:10:19.940 に答える