参照:
どの Git ブランチがどのリモート/アップストリーム ブランチを追跡しているかを確認するにはどうすればよいですか?
ローカル ブランチが追跡しているリモート ブランチを確認するにはどうすればよいですか?
出力を解析する必要がgit config
ありますか、それともこれを行うコマンドはありますか?
参照:
どの Git ブランチがどのリモート/アップストリーム ブランチを追跡しているかを確認するにはどうすればよいですか?
ローカル ブランチが追跡しているリモート ブランチを確認するにはどうすればよいですか?
出力を解析する必要がgit config
ありますか、それともこれを行うコマンドはありますか?
すべての追跡ブランチ (「プル」用に構成) を提供するコマンドを次に示します。以下を参照してください。
$ 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
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
あなた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)
ローカル ブランチとそのリモート。
git branch -vv
すべてのブランチと追跡リモート。
git branch -a -vv
ローカル ブランチがプッシュおよびプル用に明示的に構成されている場所を確認します。
git remote show {remote_name}
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
を使用できますgit checkout
。つまり、「現在のブランチをチェックアウト」します。これは、現在のブランチの追跡情報が存在する場合、その情報を表示するという副作用のあるノーオペレーションです。
$ git checkout
Your branch is up-to-date with 'origin/master'.
これが git config の出力を解析していると見なされるかどうかはわかりませんが、これにより、マスターが追跡しているリモートの URL が決定されます。
$ git config remote.$(git config branch.master.remote).url
別の簡単な方法は、
cat .git/config
git リポジトリで
これにより、ローカルブランチの詳細がリストされます
git branch -r -vv
リモートを含むすべてのブランチをリストします。
ここですべての解決策を試してみましたが、すべての状況で適切な解決策がないことに気付きました。
このコマンドはすべての名前を取得します。
git branch -a --contains HEAD --list --format='%(refname:short)'
私のアプリケーションでは、HEAD とマスター ref を除外し、リモート ref を優先し、「origin/」という単語を削除する必要がありました。それが見つからない場合は、 a/
または aを含まない最初の非 HEAD 参照を使用(
します。
このエイリアスを使用します
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のその他の優れたエイリアス
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
}
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)
私は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