1. ホーム
  2. ギット

[解決済み】Gitタグをrefspecを使用してブランチにプッシュする方法は?

2022-04-08 15:50:49

質問

強制的にプッシュしたいのですが、例えば、タグ 1.0.0 をリモートの master ブランチを作成します。

今、私は次のようにしています。

git push production +1.0.0:master

強制的にプッシュしたい というのも、私が気にしているのは 1.0.0 タグは master ブランチをリモートリポジトリに作成します。

何が間違っているのでしょうか?

更新その1

をインストールしたサーバーにSSH接続すると Git レポジトリがあり git branch -l が表示されない。 master ブランチもリストアップされています。

アップデートその2

実行後 git tag -l をリモート Git リポジトリの内部から実行すると、次のようになります。 master が表示されている、つまり、以下を実行したところ。

git push production 1.0.0:master

実際にタグをプッシュし という名前のタグを作成しました。 master よりも 新しいブランチ .

を基本的にプッシュしたい。 内容 タグの 1.0.0master ブランチを作成します。

解決方法は?

失敗の原因はおそらく 1.0.0 はアノテーションタグです。おそらく、次のようなエラーメッセージが表示されたのではないでしょうか。

エラーが発生しました。ブランチ refs/heads/master に非コミットオブジェクトを書き込もうとしました。

注釈付きタグは、タグ付けされたコミット・オブジェクトを指す、独自のタイプのオブジェクトを持ちます。ブランチはタグオブジェクトを指すことはできず、コミットオブジェクトを指すのみです。アノテーションタグをコミットオブジェクトに "ピール "して、それをプッシュする必要があります。

git push production +1.0.0^{commit}:master
git push production +1.0.0~0:master          # shorthand

この場合にも有効な別の構文がありますが、タグオブジェクトがコミット以外を指す場合(またはコミットを指すタグオブジェクト(...)を指すタグオブジェクト)には、少し異なる意味を持ちます。

git push production +1.0.0^{}:master

これらのタグ剥がし構文については git-rev-parse(1) リビジョンの指定 .