web-dev-qa-db-ja.com

Gitリモコンの「プッシュ先」のデフォルトを変更する

Gitのデフォルトのリモートブランチの宛先を変更したいのですが

git Push

の代わりに:

git Push upstream

現在これはOriginのリモートに設定されていますが、別のリモートに設定したいと思います。

私はオリジナルの(からクローン)リモコンを削除しようとしました

git remote rm Origin

これは元のリモコンを削除しました。しかしgit Push問題を解決していません。私はまだ得ます:

fatal:プッシュ先が設定されていません。からURLを指定する
コマンドラインまたは...を使用してリモートリポジトリを設定します.

私も遊んでみました:

git remote set-url --Push myfork Origin

その他のオプションはありますが、どれもうまくいかないようです(たぶん私はOriginのリモートをあまりにも早く削除したのでしょうか?)

ここで 答えに続いて 私は変更しようとしました:

git config Push.default upstream (or matching)

しかしどちらもうまくいきませんでした。

174
alonisser

私がちょうどこれを解決するために私が見つけたもう一つのテクニック(たとえ最初にOriginを削除したとしても、間違いであるように見えます)は直接git configを操作することです:

git config remote.Origin.url url-to-my-other-remote
4
alonisser

デフォルトのアップストリームを設定するためにgit Push -u <remote_name> <local_branch_name>を使うことができます。詳しくは git Pushのドキュメント をご覧ください。

167
1615903

どちらのアップストリームリモートがブランチに「配線」されているかを変更するには、git branchコマンドにアップストリーム設定フラグを付けて使用します。

最初にリモートが存在することを確認してください。

git remote -vv

現在の(チェックアウトされた)ブランチに優先リモートを設定します。

git branch --set-upstream-to <remote-name>

ブランチが正しいアップストリームリモートで設定されていることを確認します。

git branch -vv

74

このコマンドを使用すると、ブランチのデフォルトのリモートを一度に簡単に簡単に変更できます。

git Push -u <remote_name> --all
32
Mykola Denysyuk

Git 2.3.2での作業...

git branch --set-upstream-to myfork/master

statusPushおよびpullは、myfork remoteを指すようになりました。

30
pinei

(ubuntu 12.04上のgitバージョン1.7.9.5を使って)ただ説明:

Gitはリモートを追加/削除します。これらはサーバーが接続されたgitのリモートインスタンスです。

git remote add myremote git://remoteurl

そうすると、gitリポジトリを取得することができます。

git fetch myremote

これは 'myremote'という名前のブランチを作成するようですが、ブランチのリモートは自動的に設定されません。これを行うには、次の操作を行います。

まず、この問題があることを確認してください。

git config -l | grep myremote

次のようなものが見えるはずです。

remote.myremote.url=git://remoteurl
remote.myremote.fetch=+refs/heads/*:refs/remotes/myremote/*
branch.myremote.remote=.
branch.myremote.merge=refs/heads/master

branch.myremote.remote=.が表示されたら、先に進む必要があります。

git config branch.myremote.remote myremote
git checkout myremote
git pull

これでリモートリポジトリの最新情報が得られ、プル/プッシュは適切なリモートに結び付けられるはずです。この方法で、ブランチごとにリモートを切り替えることができます。 [注意] [1]

The Official Git Config Documentation によれば、デフォルトプッシュブランチ(そのページでremote.pushdefaultを検索する)を設定することができます。これはすでに存在するリポジトリ/ブランチには影響を及ぼさないので、これはうまくいくでしょうが新しいリポジトリ/ブランチに対してのみ有効です。 --globalはユーザー固有のリポジ​​トリのデフォルト(〜/ .gitconfig)を設定し、--systemはシステム全体のリポジトリのデフォルト(/ etc/gitconfig)を設定し、フラグなしで現在のリポジトリの設定オプションを設定する(./.gitconfig) ).

また、Push.default設定オプションは、ref-spec動作を設定するためのものです。 notリモートの動作。

[1]:git branch --set-upstream myotherremoteは通常ここで動作しますが、git branch --set-upstream myremoteが使用されている場合、gitはブランチをそれ自身のリモートとして設定しないと文句を言います。しかしこれは間違った振る舞いだと思います。

13
smaudet

git Push Origin -u localBranchName:remoteBranchNameを実行した後にgit Pushコマンドを連続して実行した場合は、Originが存在しないというエラーが発生します。その後、次の手順に従います。

  1. git remote -v

気にしないリモコンがあるか確認してください。 git remote remove 'name'でそれらを削除してください

  1. git config --edit

古い/存在しないリモートの可能性のある兆候を探します。 pushdefaultを探します。

[remote]
  pushdefault = oldremote

oldremoteの値を更新して保存します。

git Pushは今動作するはずです。

8
Șerban Ghiță

非常に簡単に、そしてこれに関する私自身の調査と共に、ここにある素晴らしいコメントのいくつかをまとめています。

まず、あなたのリモートブランチに結びつけたいローカルブランチをチェックしてください。

git checkout mybranch

次:

git branch -u Origin/mybranch

ここで、

git branch -u {remote name}/{branch name}

メッセージが表示されます。

"Branch mybranch set up to track remote branch mybranch from Origin."
3
Artif3x

リポジトリ内の.git/configを見ると役立つ場合があります。すべてのリモートと、各ブランチのデフォルトリモートもリストされます。

例えば。

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "Origin"]
    url = [email protected]:fii/web2016.git
    fetch = +refs/heads/*:refs/remotes/Origin/*
[branch "master"]
    remote = Origin
    merge = refs/heads/master
[branch "bugfix/#8302"]
    remote = Origin
    merge = "refs/heads/bugfix/#8302"
[branch "feature/#8331"]
    remote = Origin
    merge = "refs/heads/feature/#8331"
[remote "scm"]
    url = https://scm.xxx.be/git/web2016bs.git
    fetch = +refs/heads/*:refs/remotes/scm/*

このファイルを手動で変更して、不要なリモートを削除するか、使用しているさまざまなブランチのデフォルトのリモートを更新できます。

  • 注意を払う!リモートを変更または削除するときは、この構成ファイルでリモートへのすべての参照を更新してください
2
Kim Paulissen