私はこのGITコマンドが何をするのか理解しようとしています:このGITコマンドは何をしますか?
git push origin master:release_candidate --force
私はgit push origin master
がリモート原点にローカルマスタをプッシュ知っています。
私は:release_candidate --force
の部分を知りたいと思います。
私はこのGITコマンドが何をするのか理解しようとしています:このGITコマンドは何をしますか?
git push origin master:release_candidate --force
私はgit push origin master
がリモート原点にローカルマスタをプッシュ知っています。
私は:release_candidate --force
の部分を知りたいと思います。
:release_candidate
の部分はリモートrefspecです。それはブランチrelease_candidate
と呼ばれるリモートブランチにmaster
と呼ばれる支店を押します。通常、:
がないと、ローカルブランチは同じ名前のリモートブランチにプッシュされます。
オプションを指定すると、リモートでコミットが失われても、オプションがプッシュされます。あなたがしたいことが前にrelease_candidate
ブランチにあったものを強制的に上書きするなら、これは問題ありません。
のはdocumentationを読んで、あなたのコマンドを説明する部分を抽出してみましょう:
git push [-f | --force] [<repository> [<refspec>…]]
(私は疑問に存在していない無数のオプションを省略)
オプション
<repository>
プッシュ操作の宛先である「リモート」リポジトリ。このパラメータには、URLまたはリモートの名前を指定できます。
refspec>…
どのソースオブジェクトをどのソースオブジェクトで更新するかを指定します。
<refspec>
パラメータの形式は、オプションのプラスの+
で、その後にソースオブジェクト<src>
、その後にコロンである:
、その後に宛先の参照<dst>
が続きます。は、多くの場合、あなたがプッシュしたいブランチの名前ですが、それは任意の「SHA-1の発現」、
<src>
<dst>
などmaster~4
やHEAD
を伝えることができ、リモート側でその参照このプッシュで更新されます。ここでは任意の式を使用することはできません。実際のrefには名前を付ける必要があります。
<src>
で参照されるオブジェクトは、リモート側の<dst>
参照を更新するために使用されます。デフォルトでは、<dst>
がタグ(注釈付きまたは軽量)でない場合にのみ、そして<dst>
を早送りできる場合にのみ許可されます。
...
--force
-f
通常、コマンドは、それを上書きするために使用されるローカル参照の祖先ではないリモート参照を更新してくれません。 [...]
このフラグは、これらのチェックを無効にし、リモートリポジトリにコミットが失われる可能性があります。慎重に使用してください。
、あなたのコマンドをすべてをまとめると:
git push origin master:release_candidate --force
はorigin
リモートのブランチrelease_candidate
を更新するために、ローカルブランチmaster
を使用しています。ローカルブランチmaster
がリモートブランチorigin/release_candidate
の子孫である場合、--force
フラグは必要ありません。それ以外の場合は、--force
を指定しないと、プッシュはリモートサーバーによって拒否されます。
--force
を使用した場合の詳細については(例をあげて)、Notes about fast forwardsのマニュアルを参照してください。
https://git-scm.com/docs/git-push – axiac
'man git push'または' man git-push' – Pockets