特定のブランチへのgit push


101

この質問を読んだ後でも:git-push-current-branch、それでもgit pushコマンドをどのように書くべきかを理解するのに苦労しています。質問リンクで述べたように、ドキュメントからは明確ではありません。

私の「実世界」の例を使用したいと思います。git statusブランチのトップレベルでコマンドを実行すると、次のようになります。

ブランチamd_qlp_tester

ブランチは、5つのコミットで「origin / amd_qlp_tester」よりも進んでいます。

等...

したがって、私のブランチ名はamd_qlp_testerメインブランチから「分岐」されています(用語が間違っている場合は、SVNの背景が原因です)。ただし、「origin / amd_qlp_testser」という名前もあります。

それでは、どのようにプッシュコマンドをフレーズするのですか?

次のいずれかです。

git push origin/amd_qlp_tester
git push origin amd_qlp_tester
git push amd_qlp_tester
git push origin
git push

回答:


92

git push origin amd_qlp_testerあなたのために働くでしょう。と入力するgit pushと、現在のブランチのリモートがデフォルト値になります。

pushの構文は次のようになります- git push <remote> <branch>。リモートで.git/configファイルを見る[remote "origin"]と、リポジトリのURLを指定するエントリが表示されます。そのため、コマンドの最初の部分で、Gitにこのプロジェクトのリポジトリを検索する場所を指示し、次にブランチを指定するだけです。


その:)のおかげで、彼らは2別々の「言葉」DITの状況説明が表示されているなぜあなたはそれがパスとして説明することができ、すなわち、なぜそれがあるorigin amd_qlp_testserとないorigin/amd_qlp_tester
code_fodder

デフォルトの「リモート」は、現在のブランチの構成に基づいています(この場合、実際にはorigin)。(現在のバージョンのgitで)デフォルトをプッシュするブランチ(:設定されていない場合)。つまりmatching、は、将来変更される予定です。
torek 2013年

私は少し混乱しています。v2.10を使用しています。タイプgit pushすると、追跡されたすべてのブランチをプッシュしようとします。
Roberto

Git 2.xは、simple現在のブランチのみをプッシュするというプッシュ戦略を使用する必要があります。blogs.atlassian.com/2014/06/happened-git-2-0-full-goodies
Petr Mensik 2017年

fatal: Couldn't find remote ref branch-name-here
doug65536

110

ローカルブランチとリモートブランチが同じ名前の場合、それを行うことができます:

git push origin branchName

ローカルとリモートのブランチ名が異なる場合は、次のようにすることができます。

git push origin localBranchName:remoteBranchName

8

リンク先の問題の答えはすべて、非常に短いgit pushコマンドを入力して必要なことをすべて実行できるようにgitを構成することです。Git-Eseで何が欲しいのか、それをどのようにスペルするのかを知っていれば、これは素晴らしいことですが、gitは初めてです!:-)

あなたの場合、Petr Mensikの答えは(まあ、 "a")正しい答えです。理由は次のとおりです。

このコマンドは、ファイル内をたどって、名前の付いた「リモート」(たとえば、)を見つけます。設定ファイルには以下がリストされています:git push remote.git/configorigin

  • ここで、(URLワイズ)遠隔「命」(例えば、その)ssh://hostname/path
  • プッシュがどこに行くか、異なる場合
  • プッシュするブランチ(プッシュするブランチ)を言わなかった場合
  • 実行すると何が取得されますか git fetch remote

最初にリポジトリを複製したとき-それがいつでも-gitはこれらのいくつかに対してデフォルト値を設定しました。セットまたは設定解除は、すべて「合理的な」デフォルト設定されている場合、URLは、あなたからクローン化され、残り何で...か、うーん、ある彼らは?

これらの問題は、何が「合理的」であるかについて、人々が時間をかけて心を変えてきたことです。したがって、(gitのバージョンと、詳細に設定したかどうかに応じて)gitは、将来変更されるデフォルトについて多くの警告を出力する可能性があります。「プッシュするブランチ」の名前を追加する— amd_qlp_tester—(1)それをシャットダウンし、(2)その1つのブランチだけをプッシュします。

より便利にプッシュしたい場合は、次のようにします。

git push origin

あるいは:

git push

しかし、それがあなたの望むことをするかどうかは、元のデフォルトが妥当である「初期のgit作者」に同意するか、元のデフォルトが妥当ではない「後のgit作者」に同意するかによって異なります。したがって、すべての構成を(最終的には)行いたい場合は、リンク先の質問(および回答)を参照してください。

origin/amd_qlp_tester「リモートブランチ」と呼ばれていますが、そもそも名前はローカルエンティティ(リポジトリ内に保持されている名前)です。「amd_qlp_tester向こうはどこ」でのgitの最良の推測です。Git は可能な場合に更新します


1
説明ありがとうございました。私は正確であることが好きなのでgit push origin amd_qlp_tester、より高度なことをする必要があるまで固執します:)
code_fodder

2

更新された回答を追加したいと思います-今しばらくgitを使用していますが、次のコマンドを使用してプッシュを実行していることがよくあります(例として元の質問を使用)。

  • git push origin amd_qlp_tester-と呼ばoriginれるリモートブランチで呼び出されるリモートにあるブランチにプッシュしamd_qlp_testerます。
  • git push -u origin amd_qlp_tester-最後のものと同じですが、ローカルブランチをリモートブランチにリンクする上流を設定します。これにより、次回git push/pullは、まだリンクされていない場合にのみ使用できます(一度だけ実行する必要があります)。
  • git push -アップストリームを設定したら、この短いバージョンを使用できます。

-uオプションはショートバージョンであることに注意してください--set-upstream -それらは同じです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.