「git branch --set-upstream」を実行する必要を回避し、代わりにデフォルトでリモート トラッキングを自動的に設定するにはどうすればよいでしょうか? 質問する

「git branch --set-upstream」を実行する必要を回避し、代わりにデフォルトでリモート トラッキングを自動的に設定するにはどうすればよいでしょうか? 質問する

Git で新しいブランチを作成します。

git branch my_branch

押して:

git push origin my_branch

ここで、誰かがサーバー上で何らかの変更を行い、そこからプルしたいとしますorigin/my_branch。その場合、次のようにします。

git pull

しかし、私はこう思います:

You asked me to pull without telling me which branch you
want to merge with, and 'branch.my_branch.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:

    [branch "my_branch"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

私は、次の方法でそれが機能することを学びました:

git branch --set-upstream my_branch origin/my_branch

しかし、作成するすべてのブランチに対してなぜこれを行う必要があるのでしょうか? にプッシュしたらmy_branchorigin/my_branchプルする必要があるのは明らかではありませんか? これをデフォルトの動作にするにはどうすればよいでしょうか?origin/my_branchmy_branch

ベストアンサー1

Git v2.37.1 以上

上記のバージョン以上を使用している場合は、この新しい構成エントリを使用してリモート トラッキングを自動的に設定できます。

git config --global push.autoSetupRemote true

その後は、トラッキングgit pushが自動的に設定されます。git push -u origin my_branch


git branch --set-upstream 1の構文を覚える必要がないショートカットは、次のとおりです。

git push -u origin my_branch

...そのブランチを初めてプッシュするとき。または、同じ名前のブランチから現在のブランチにプッシュする場合 (エイリアスに便利です):

git push -u origin HEAD

一度だけ使用すれば、 と同じように、-u自分のブランチと のブランチとの関連付けが設定されますorigingit branch --set-upstream

個人的には、自分のブランチとリモートのブランチの関連付けを明示的に設定するのは良いことだと思っています。ただ、ルールが異なるgit pushgit pull


1馬鹿げているように聞こえるかもしれませんが、現在のブランチがデフォルトであると想定して、現在のブランチを指定することを頻繁に忘れてしまいます。実際はそうではなく、結果は非常に混乱を招きます。

2012-10-11更新: どうやら間違えやすいと感じたのは私だけではないようです! ありがとうヴォンCgit 1.8.0 では、より明白な が導入されたことを指摘していただきありがとうございます。git branch --set-upstream-toこれは、ブランチ にいる場合は次のように使用できますmy_branch

git branch --set-upstream-to origin/my_branch

...または短いオプションを使用します:

git branch -u origin/my_branch

この変更とその理由については、Git 1.8.0 リリース候補 1 のリリースノート:

と言いたくなりますgit branch --set-upstream origin/masterが、これは Git に、origin/master現在チェックアウトされているブランチと統合するようにローカル ブランチを配置するように指示することになり、ユーザーが意図したものではない可能性が高くなります。 このオプションは非推奨です。代わりに、新しい--set-upstream-to(短くてわかりやすい が付いた-u) オプションを使用してください。

おすすめ記事