1. ホーム
  2. git

[解決済み] なぜ `--set-upstream` を常に実行する必要があるのですか?

2022-03-18 10:41:55

質問

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 ? どうすれば、この動作をデフォルトにできますか?

解決方法は?

の構文を覚える必要がないショートカットです。 git branch --set-upstream 1 が行うことです。

git push -u origin my_branch

... そのブランチを最初にプッシュするとき。あるいは、同名のブランチから現在のブランチにプッシュする場合 (エイリアスとして使用する場合に便利です)。

git push -u origin HEAD

を使用するだけです。 -u 一度だけ、あなたのブランチと origin と同じように git branch --set-upstream が行う。

個人的には、自分のブランチとリモートのブランチとの関連付けを明示的に設定しなければならないのは良いことだと思います。 ただ残念なのは、そのルールが とは異なります。 git pushgit pull .


1 バカげていると思われるかもしれませんが、私は頻繁に現在のブランチを指定するのを忘れてしまいます。

2012年10月11日更新 : どうやら、間違えやすいと感じたのは私だけではなさそうです ありがとうございました。 VonC git 1.8.0では、より明白な git branch --set-upstream-to ブランチにいる場合は、次のように使用できます。 my_branch :

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

... または short オプションを使用します。

git branch -u origin/my_branch

この変更とその理由については、以下のとおりです。 git 1.8.0、リリース候補1のリリースノートです。 :

と言いたくなるような内容でした。 git branch --set-upstream origin/master しかし、これはGitにローカルブランチをアレンジするように指示します。 origin/master をチェックアウトしたブランチと統合させることができますが、これはユーザーが意図したものである可能性は極めて低いでしょう。このオプションは非推奨です。 --set-upstream-to (ショートアンドスイートで -u )オプションで代用できます。