2017-04-15 13 views
2

ローカルブランチからリモート名を取得する方法は?ローカルブランチからリモート名を取得する

リモートトラッキングブランチ名は必要ありませんが、リモート名だけが必要です。

このような例を考えてみましょう。 prefix/githubを入手するにはどうすればよいですか?

$ git status -b 
## dev...prefix/github/rm/dev 

$ git remote 
github 
prefix 
prefix/github 

のでprefix/githubは、リモートとローカルブランチdevは、リモートブランチrm/devを追跡しています。

これまでのところ私はこの方法を知っていますが、完全には保護されていません。

$ git rev-parse --abbrev-ref @{u} 2>/dev/null | cut -d'/' -f1 
prefix 

prefix/githubリモート名は意図的です。私はフォワードスラッシュなしで自分のリモコンを保つことで暮らすことができます(その場合は上記が機能します)が、何かが欠落しているかどうかを知りたいと思っていました。

fyi:私はこれが最終的に使用されるbashスクリプトを持っています。

更新:

この質問はだまされやすい人ではない理由については、このコメントを参照してください: Get remote name from local branch

+0

ローカルブランチを追跡するリモートブランチがどこにあるのか把握しようとしていますか? – merlin2011

+0

はい。したがって、上記の例では、リモート名である 'prefix/github'を取得する必要があります。 – hIpPy

+0

http://git-wt-commit.rubyforge.org/に直接、あるいはそれが何をしているのかを複製してください。 – bishop

答えて

1

これは機能します。私はそれがこの不自然で正直驚いている

[branch "dev"] 
    remote = prefix/github 
    merge = refs/heads/dev 

git config --get branch.dev.remote 

ローカルGitの設定ファイル(.git/config)は、このbranchセクションを持つ必要があります。

+0

私はあなたが何を意味するのかは分かりません*歴史的な理由からこの方法です。もう少し詳しくはhttp://stackoverflow.com/a/42033047/1256452を参照してください。 (私はこれについて他にも "もっと詳しく"書いていますが、すぐに見つけられないと確信しています) – torek

+0

@torek、ああわかりました。私は 'git branch'や' git remote'ではなく、 'git config'ではなく、直感的ではないと思っていました。 – hIpPy

+0

ユーザー指向の磁器は、今日、これらのものに2つの部分があるという事実を隠そうとしています。それが良い設計の決定であるかどうかは、まったく別の質問です。一方、配管工事のコードは、歴史的な異様なものでいっぱいです。 :-) – torek

0

を、あなたが探している情報は、あなたのセットアップは、ブランチのトラッキング後.git/configファイルに格納されます。そこから簡単に抽出することができるはずです(例:grep -B ... | grep ... - そのファイルを見てから、あなた自身で記入してください)。

リモートの追跡情報がないブランチが明示的に格納されていることがあります。

関連する問題