web-dev-qa-db-ja.com

git特定のブランチへのプッシュ

この質問を読んだ後でも: 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?
72
code_fodder

git Push Origin AMD_qlp_testerが機能します。 git Pushと入力すると、現在のブランチのリモートがデフォルト値になります。

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

67
Petr Mensik

ローカルブランチとリモートブランチが同じ名前の場合、次のようにできます。

git Push Origin branchName

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

git Push Origin localBranchName:remoteBranchName
49
Imranmadbar

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

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

git Push remoteコマンドは、.git/configファイル内をルートして、名前付きの「リモート」(たとえば、Origin)を見つけます。構成ファイルには以下がリストされます。

  • ここで、(URLごとに)リモートが「生きている」(例:ssh://hostname/path
  • 異なる場合、プッシュはどこに行く
  • プッシュするブランチ、プッシュするブランチを指定しなかった場合
  • git fetch remoteを実行するとフェッチされるもの

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

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

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

git Push Origin

あるいは:

git Push

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

名前Origin/AMD_qlp_testerに関しては、「リモートブランチ」と呼ばれていますが、実際にはローカルエンティティ(リポジトリ内に保持されている名前)です。 「AMD_qlp_testerがどこにあるのか」をgitが最もよく推測しています。 Git 可能な場合は更新します

9
torek

更新された回答を追加したいと思います-しばらく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の短縮バージョンです-それらは同じです。

0
code_fodder