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_branch
、にorigin/my_branch
プルする必要があるのは明らかではありませんか? これをデフォルトの動作にするにはどうすればよいでしょうか?origin/my_branch
my_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
自分のブランチと のブランチとの関連付けが設定されます。origin
git branch --set-upstream
個人的には、自分のブランチとリモートのブランチの関連付けを明示的に設定するのは良いことだと思っています。ただ、ルールが異なるgit push
git 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
) オプションを使用してください。