web-dev-qa-db-ja.com

refspecを使用してGitタグをブランチにプッシュするにはどうすればよいですか?

たとえば、1.0.0タグをリモートのmasterブランチにプッシュします。

私は今、次のことをしています:

git Push production +1.0.0:master

Pushを強制したいのは、1.0.0タグ内のコードがリモートリポジトリのmasterブランチにプッシュされるだけだからです。

何が間違っていますか?

アップデート#1

Git リポジトリがあるサーバーにSSHで接続し、git branch -lを実行しても、masterブランチが表示されません。

アップデート#2

リモートGitリポジトリ内からgit tag -lを実行すると、masterがリストされていることがわかります。つまり、次のコマンドを実行したときです。

git Push production 1.0.0:master

実際にタグをプッシュし、という名前のタグを作成しましたmasterではなく、新しいブランチ

基本的に、タグ1.0.0contentsをリモートGitリポジトリのmasterブランチにプッシュします。

215

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)リビジョンの指定 で説明されています。

56
Chris Johnsen
git Push --tags production
469
bstpierre

このようなタグを作成し、GitHubにプッシュします。

git tag -a v1.1 -m "Version 1.1 is waiting for review"
git Push --tags

Counting objects: 1, done.
Writing objects: 100% (1/1), 180 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To [email protected]:neoneye/triangle_draw.git
 * [new tag]         v1.1 -> v1.1
61
neoneye

単一のタグをプッシュする場合:git Push <reponame> <tagname>

たとえば、git Push production 1.0.0。タグはブランチにバインドされず、コミットにバインドされます。

タグのコンテンツをmasterブランチに配置する場合は、マシンでローカルに実行します。私はあなたがあなたの地元のマスターブランチで開発を続けたと思います。次に、git Push Origin masterで十分です。

9
koppor