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)
しかしどちらもうまくいきませんでした。
私がちょうどこれを解決するために私が見つけたもう一つのテクニック(たとえ最初にOriginを削除したとしても、間違いであるように見えます)は直接git configを操作することです:
git config remote.Origin.url url-to-my-other-remote
デフォルトのアップストリームを設定するためにgit Push -u <remote_name> <local_branch_name>
を使うことができます。詳しくは git Pushのドキュメント をご覧ください。
どちらのアップストリームリモートがブランチに「配線」されているかを変更するには、git branch
コマンドにアップストリーム設定フラグを付けて使用します。
最初にリモートが存在することを確認してください。
git remote -vv
現在の(チェックアウトされた)ブランチに優先リモートを設定します。
git branch --set-upstream-to <remote-name>
ブランチが正しいアップストリームリモートで設定されていることを確認します。
git branch -vv
このコマンドを使用すると、ブランチのデフォルトのリモートを一度に簡単に簡単に変更できます。
git Push -u <remote_name> --all
Git 2.3.2での作業...
git branch --set-upstream-to myfork/master
status
、Push
およびpull
は、myfork
remoteを指すようになりました。
(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はブランチをそれ自身のリモートとして設定しないと文句を言います。しかしこれは間違った振る舞いだと思います。
git Push Origin -u localBranchName:remoteBranchName
を実行した後にgit Push
コマンドを連続して実行した場合は、Originが存在しないというエラーが発生します。その後、次の手順に従います。
git remote -v
気にしないリモコンがあるか確認してください。 git remote remove 'name'
でそれらを削除してください
git config --edit
古い/存在しないリモートの可能性のある兆候を探します。 pushdefault
を探します。
[remote]
pushdefault = oldremote
oldremote
の値を更新して保存します。
git Push
は今動作するはずです。
非常に簡単に、そしてこれに関する私自身の調査と共に、ここにある素晴らしいコメントのいくつかをまとめています。
まず、あなたのリモートブランチに結びつけたいローカルブランチをチェックしてください。
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."
リポジトリ内の.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/*
このファイルを手動で変更して、不要なリモートを削除するか、使用しているさまざまなブランチのデフォルトのリモートを更新できます。