1044

参照:
どの Git ブランチがどのリモート/アップストリーム ブランチを追跡しているかを確認するにはどうすればよいですか?

ローカル ブランチが追跡しているリモート ブランチを確認するにはどうすればよいですか?

出力を解析する必要がgit configありますか、それともこれを行うコマンドはありますか?

4

24 に答える 24

1206

すべての追跡ブランチ (「プル」用に構成) を提供するコマンドを次に示します。以下を参照してください

$ git branch -vv
  main   aaf02f0 [main/master: ahead 25] Some other commit
* master add0a03 [jdsumsion/master] Some commit

SHA と長いラップ コミット メッセージをくまなく調べる必要がありますが、入力するのは簡単で、追跡ブランチが 3 列目に垂直に配置されます。

ブランチごとに「プル」と「プッシュ」の両方の構成に関する情報が必要な場合は、 の他の回答を参照してくださいgit remote show origin


アップデート

git バージョン 1.8.5 以降では、上流のブランチをgit statusとで表示できます。git status -sb

于 2012-09-21T21:54:31.247 に答える
447

2 つの選択肢:

% git rev-parse --abbrev-ref --symbolic-full-name @{u}
origin/mainline

また

% git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"
origin/mainline
于 2012-03-17T20:17:11.723 に答える
243

あなたgit branch -avが持っているブランチとそれらがどのコミットにあるのかを教えてくれるだけで、ローカルブランチがどのリモートブランチを追跡しているかを推測することができます。

git remote show originどのブランチがどのリモート ブランチを追跡しているかを明示的に示します。単一のコミットと という名前のリモート ブランチを含むリポジトリからの出力例を次に示しますabranch

$ git branch -av
* abranch                d875bf4 initial commit
  master                 d875bf4 initial commit
  remotes/origin/HEAD    -> origin/master
  remotes/origin/abranch d875bf4 initial commit
  remotes/origin/master  d875bf4 initial commit

$ git remote show origin
* remote origin
  Fetch URL: /home/ageorge/tmp/d/../exrepo/
  Push  URL: /home/ageorge/tmp/d/../exrepo/
  HEAD branch (remote HEAD is ambiguous, may be one of the following):
    abranch
    master
  Remote branches:
    abranch tracked
    master  tracked
  Local branches configured for 'git pull':
    abranch merges with remote abranch
    master  merges with remote master
  Local refs configured for 'git push':
    abranch pushes to abranch (up to date)
    master  pushes to master  (up to date)
于 2011-10-11T22:25:28.213 に答える
54

ローカル ブランチとそのリモート。

git branch -vv 

すべてのブランチと追跡リモート。

git branch -a -vv

ローカル ブランチがプッシュおよびプル用に明示的に構成されている場所を確認します。

git remote show {remote_name}
于 2016-07-16T00:37:53.593 に答える
29

This will show you the branch you are on:

$ git branch -vv

This will show only the current branch you are on:

$ git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)

for example:

myremote/mybranch

You can find out the URL of the remote that is used by the current branch you are on with:

$ git remote get-url $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)|cut -d/ -f1)

for example:

https://github.com/someone/somerepo.git
于 2016-11-16T11:26:25.003 に答える
24

を使用できますgit checkout。つまり、「現在のブランチをチェックアウト」します。これは、現在のブランチの追跡情報が存在する場合、その情報を表示するという副作用のあるノーオペレーションです。

$ git checkout 
Your branch is up-to-date with 'origin/master'.
于 2014-10-23T10:27:46.023 に答える
20

これが git config の出力を解析していると見なされるかどうかはわかりませんが、これにより、マスターが追跡しているリモートの URL が決定されます。

$ git config remote.$(git config branch.master.remote).url
于 2011-06-21T12:17:29.973 に答える
11

別の簡単な方法は、

cat .git/configgit リポジトリで

これにより、ローカルブランチの詳細がリストされます

于 2014-12-10T07:19:42.593 に答える
9
git branch -r -vv

リモートを含むすべてのブランチをリストします。

于 2016-03-07T02:36:16.620 に答える
2

ここですべての解決策を試してみましたが、すべての状況で適切な解決策がないことに気付きました。

  • ローカルブランチで動作します
  • 切り離されたブランチで動作します
  • CIの下で働く

このコマンドはすべての名前を取得します。

git branch -a --contains HEAD --list --format='%(refname:short)'

私のアプリケーションでは、HEAD とマスター ref を除外し、リモート ref を優先し、「origin/」という単語を削除する必要がありました。それが見つからない場合は、 a/または aを含まない最初の非 HEAD 参照を使用(します。

于 2020-08-25T19:07:37.880 に答える
1

このエイリアスを使用します

git config --global alias.track '!sh -c "
if [ \$# -eq 2 ]
 then
   echo \"Setting tracking for branch \" \$1 \" -> \" \$2;
   git branch --set-upstream \$1 \$2;
 else
   git for-each-ref --format=\"local: %(refname:short) <--sync--> remote: %(upstream:short)\" refs/heads && echo --URLs && git remote -v;
fi  
" -'

それから

git track

スクリプトは追跡の設定にも使用できることに注意してください。

https://github.com/orefalo/bash-profilesのその他の優れたエイリアス

于 2012-04-04T15:27:20.583 に答える
0

Gradleを使用している場合は、

def gitHash = new ByteArrayOutputStream()
    project.exec {
        commandLine 'git', 'rev-parse', '--short', 'HEAD'
        standardOutput = gitHash
    }

def gitBranch = new ByteArrayOutputStream()
    project.exec {
        def gitCmd = "git symbolic-ref --short -q HEAD || git branch -rq --contains "+getGitHash()+" | sed -e '2,\$d'  -e 's/\\(.*\\)\\/\\(.*\\)\$/\\2/' || echo 'master'"
        commandLine "bash", "-c", "${gitCmd}"
        standardOutput = gitBranch
    }
于 2016-09-12T18:20:22.987 に答える
0
git branch -vv | grep 'hardcode-branch-name'
# "git rev-parse --abbrev-ref head" will get your current branch name
# $(git rev-parse --abbrev-ref head) save it as string
#  find the tracking branch by grep filtering the current branch 
git branch -vv | grep $(git rev-parse --abbrev-ref head)
于 2022-02-08T19:57:27.270 に答える
-2

私はEasyGit (別名「eg」)を Git の上 (または横) の超軽量ラッパーとして使用しています。EasyGit には、現在のブランチのリモート トラッキング ブランチを含む、あらゆる種類の非常に役立つ情報を提供する「info」サブコマンドがあります。以下に例を示します (現在のブランチ名は「foo」です)。

pknotz@s883422: (foo) ~/workspace/bd
$例えば情報
合計コミット: 175
ローカル リポジトリ: .git
名前付きリモート リポジトリ: (名前 -> 場所)
  起源 -> git://sahp7577/home/pknotz/bd.git
現在のブランチ: foo
  暗号化チェックサム (sha1sum): bd248d1de7d759eb48e8b5ff3bfb3bb0eca4c5bf
  デフォルトのプル/プッシュ リポジトリ: origin
  デフォルトのプル/プッシュ オプション:
    branch.foo.remote = オリジン
    branch.foo.merge = refs/heads/aal_devel_1
  投稿者数: 3
  ファイル数:28
  ディレクトリ数: 20
  最大ファイル サイズ (バイト単位): 32473 (pygooglechart-0.2.0/COPYING)
  コミット: 62
于 2008-10-05T14:39:10.503 に答える