私はバージョン管理が初めてで、これに苦労しています。
それで、リモートに check-fallback
というブランチがあります。
そして、そのブランチに基づいてローカル ブランチを作成したいと思いました。私のタスクはやや近く、そのブランチでほとんどの作業を行う必要があるからです。
だから私がしたことは、 git checkout -b check-fallback-subtask origin/check-fallback
今、私はローカルブランチとして check-fallback-subtask
を持っていて、それに取り組み、git add .
を行い、git commit
しました.
今、プッシュすると、git は次の指示を返しますが、どれに従うべきかよくわかりません。
fatal: 現在のブランチの上流ブランチが一致しません
現在のブランチの名前。上流のブランチにプッシュするには
リモートで、使用します
git push origin HEAD:check-fallback
リモートで同じ名前のブランチにプッシュするには、次を使用します
git push オリジン HEAD
いずれかのオプションを永続的に選択するには、「git help config」の push.default を参照してください。
ただ平和的に (笑) ローカルの check-fallback-subtask
を新しいブランチとしてリモート リポジトリにプッシュしたいだけです。
どうすればいいですか?私はこれらすべてに慣れていないので、ご容赦ください。
以前に check-fallback
をローカルでチェックアウトしたことがないようですね。したがって、check-fallback-subtask
を作成すると、git は自動的にローカル ブランチを origin/check-fallback
に関連付けます。この関連付けを変更するには、git push
にいくつかの詳細を提供し、デフォルトをオーバーライドするだけです:
git push --set-upstream origin check-fallback-subtask:check-fallback-sutask
これは一度だけ行う必要があります。その後、通常どおり git push
できます。詳細については、git help push
を参照してください。
このような問題を回避するために、私は通常、Web UI を介してリモート (GitHub、GitLab、BitBucket など) にブランチを作成します。次に、ローカルで git fetch
し、作成したブランチを git checkout
します。
Code-Apprentice の答えは正しいですが、ローカル ブランチの 1 回限りのプッシュだけが必要な場合は、特定のリモート ブランチでは、次のコマンドを実行できます:
git push origin local:remote
例
git push origin check-fallback-subtask:check-fallback-subtask
問題はこのコマンドにあります:
git checkout -b check-fallback-subtask origin/check-fallback
新しいブランチを作成し、リモート追跡ブランチ (この場合は origin/*
) から開始するように指定すると、デフォルトでそのブランチが追跡されます。次のように追跡しないように指定できます:
git checkout -b check-fallback-subtask origin/check-fallback --no-track
その後、まだ何も追跡されず、ローカル check-fallback
など、ローカル ブランチから分岐したかのように動作します。
ブランチを作成したときに、おそらく次のようなメッセージが表示されたことに注意してください:
新しいブランチ 'check-fallback-subtask' に切り替えました
「origin/check-fallback」を追跡するように設定されたブランチ「check-fallback-subtask」。
次回、上流のブランチを別のものに変更する必要があることを思い出させるかもしれません。いつでも git status
と入力して、ローカル ブランチがリモート ブランチを追跡しているかどうかを確認することもできます。