217

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

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

git push production +1.0.0:master

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

私は何が間違っているのですか?

アップデート#1

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

アップデート#2

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

git push production 1.0.0:master

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

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

4

4 に答える 4

469
git push --tags production
于 2010-10-31T02:03:40.313 に答える
64

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)で説明されています。

于 2010-10-31T02:08:50.853 に答える
61

このようなタグを作成してから、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 git@github.com:neoneye/triangle_draw.git
 * [new tag]         v1.1 -> v1.1
于 2011-11-09T14:17:57.577 に答える
10

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

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

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

于 2013-06-03T07:06:09.890 に答える