リモート git タグをチェックアウトするときは、次のようなコマンドを使用します。
git checkout -b local_branch_name origin/remote_tag_name
次のようなエラーが発生しました:
エラー: pathspec は
origin/remote_tag_name
git に認識されているファイルと一致しませんでした。
git tag コマンドを使用すると、remote_tag_name を見つけることができます。
ベストアンサー1
まずgitのタグとは何かを説明しましょう
タグは、履歴内の特定のコミット
にラベルを付けてマークするために使用されます。通常は、リリース ポイント (例: v1.0 など) をマークするために使用されます。
タグはブランチに似ているように見えますが、タグは変更されません。タグは履歴内の特定のコミットを直接ポイントし、明示的に更新されない限り変更されません。
タグがローカルリポジトリにない場合はチェックアウトできないため、まずfetch
タグをローカルリポジトリにコピーする必要があります。
まず、タグがローカルに存在することを確認します。
# --all will fetch all the remotes.
# --tags will fetch all tags as well
$ git fetch --all --tags --prune
次に、タグを実行して確認します。
$ git checkout tags/<tag_name> -b <branch_name>
代わりにプレフィックスorigin
を使用しますtags/
。
このサンプルにはバージョン 1.0 とバージョン 1.1 の 2 つのタグがあり、次のいずれかを使用してチェックアウトできます。
$ git checkout A ...
$ git checkout version 1.0 ...
$ git checkout tags/version 1.0 ...
タグは特定のコミットへのポインタにすぎないため、上記のすべては同じことを行います。
起源:https://backlog.com/git-tutorial/img/post/stepup/capture_stepup4_1_1.png
すべてのタグのリストを表示するにはどうすればいいですか?
# list all tags
$ git tag
# list all tags with given pattern ex: v-
$ git tag --list 'v-*'
タグを作成するには?
タグを作成するには 2 つの方法があります。
# lightweight tag
$ git tag v1.0
# annotated tag
$ git tag -a v1.0
2つの違いは、注釈付きタグを作成するときに、gitコミットと同じようにメタデータ(
名前、電子メール、日付、コメント、署名)を追加できることです。
タグを削除するにはどうすればいいですか?
ローカルタグを削除する
$ git tag -d <tag_name>
Deleted tag <tag_name> (was 000000)
注意:存在しない Git タグを削除しようとすると、次のエラーが表示されます。
$ git tag -d <tag_name>
error: tag '<tag_name>' not found.
リモートタグを削除する
# Delete a tag from the server with push tags
$ git push --delete origin <tag name>
特定のタグを複製するにはどうすればよいですか?
特定のタグの内容を取得するには、コマンドを使用しますcheckout
。上で説明したように、タグは他のコミットと同じなので、checkout
SHA-1を使用する代わりに、単にtag_nameに置き換えて使用できます。
オプション1:
# Update the local git repo with the latest tags from all remotes
$ git fetch --all
# checkout the specific tag
$ git checkout tags/<tag> -b <branch>
オプション2:
クローンコマンドの使用
Gitはクローンコマンドに を追加することで浅いクローンをサポートしているので、--branch
ブランチ名の代わりにタグ名を使用できます。Gitは、指定されたSHA-1を関連するコミットに「変換」する方法を知っています。
# Clone a specific tag name using git clone
$ git clone <url> --branch=<tag_name>
git クローン --branch=
--branch
タグを取得して、結果のリポジトリ内のそのコミットで HEAD を切り離すこともできます。
タグをプッシュするにはどうすればいいですか?
git push --tags
すべてのタグをプッシュするには:
# Push all tags
$ git push --tags
refs/tags
を単に指定するのではなく、を使用します<tagname>
。
なぜ?
refs/tags
タグがブランチと同じ名前になることがあり、単純なgit pushでタグではなくブランチがプッシュされるため、使用することをお勧めします。
注釈付きタグと現在の履歴チェーンタグをプッシュするには、次を使用します。
git push --follow-tags
このフラグは、両方のコミットと、次の両方のタグのみ--follow-tags
をプッシュします。
- 注釈付きタグ(ローカル/一時ビルドタグをスキップできます)
- 現在のブランチ(履歴上にある)から到達可能なタグ(祖先)
Git 2.4からは設定を使って設定できる
$ git config --global push.followTags true