203

リモートのベアリポジトリがありますhub。私はmaster支店でのみ働いています。以下のこのエラーメッセージの最後の文は、私に不思議に思います: 「現在のブランチにデフォルトで構成されたリモート」がどれであるかをどのように見つけるのですか?そして、どうすれば設定できますか?

[myserver]~/progs $ git remote -v
hub     ~/sitehub/progs.git/ (fetch)
hub     ~/sitehub/progs.git/ (push)

[myserver]~/progs $ git branch -r
  hub/master

[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master

[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.
4

5 に答える 5

265

あなたはそれをもっと簡単に行うことができ、あなた.gitconfigが意味のある状態に置かれることを保証します:

Gitバージョンv1.8.0以降を使用する

git push -u hub master押すとき、または:
git branch -u hub/master

また

(これにより、現在チェックアウトされているブランチのリモートがに設定されますhub/master
git branch --set-upstream-to hub/master

また

(これにより、という名前のブランチのリモートが設定さbranch_nameれますhub/master
git branch branch_name --set-upstream-to hub/master

v1.7.x以前に使用している場合

使用する必要があります--set-upstream
git branch --set-upstream master hub/master

于 2011-01-31T10:44:00.220 に答える
238

リモートブランチを追跡する

git-branchのtrackオプションを使用して、プッシュおよびプル用のデフォルトのリモートリポジトリを指定できます。通常は、ローカルマスターブランチを作成するときに--trackオプションを指定してこれを行いますが、すでに存在しているため、次のように手動で構成を更新します。

あなたの編集.git/config

[branch "master"]
  remote = origin
  merge = refs/heads/master

これで、単にgitpushとgitpullを実行できます。

[ソース]

于 2011-01-31T02:28:23.813 に答える
33

完全を期すために:前の回答は、アップストリームブランチを設定する方法を示していますが、それを確認する方法は示していません。

これを行うにはいくつかの方法があります。

git branch -vvすべてのブランチの情報を表示します。(ほとんどの端末で青色でフォーマットされています)

cat .git/configこれも示しています。

参考のために:

于 2014-06-02T15:26:13.283 に答える
0

この質問に対する回答のプログラムバージョンは次のとおりです。

git branch --show-current -vv --format='%(upstream:remotename)'

これにより、現在のブランチのデフォルトのリモート名のみが出力されます。この--show-currentオプションは、Gitバージョン2.22.0より前では機能しません。

于 2022-01-07T01:07:21.650 に答える
-2

ブランチの効果的なプッシュリモートを取得するコマンド(例:master)は次のとおりです。

git config branch.master.pushRemote || git config remote.pushDefault || git config branch.master.remote

理由は次のとおりです(「mangitconfig」出力から):

branch.name.remote [...]は、gitfetchとgitpushに、フェッチ元/プッシュ先のリモートを通知します[...] [プッシュの場合]はremote.pushDefault(すべてのブランチの場合)[および]でオーバーライドできます。現在のブランチ[..]はbranch.name.pushRemoteによってさらにオーバーライドされます[...]

何らかの理由で、「man git push」はbranch.name.remoteについてのみ通知します(3つの中で最も優先順位が低い場合でも)+設定されていない場合、デフォルトをoriginにプッシュすると誤って記述されます-そうではなく、ただリポジトリのクローンを作成すると、branch.name.remoteがoriginに設定されますが、この設定を削除すると、originがリモートになっている場合でも、gitpushは失敗します。

于 2019-07-11T11:47:54.660 に答える