web-dev-qa-db-ja.com

Git tagとは何か、タグの作り方、git remote tagのチェックアウト方法

リモートgitタグをチェックアウトするときは、次のようなコマンドを使用します。

git checkout -b local_branch_name Origin/remote_tag_name

私はこのようなエラーを得ました:

error: pathspec `Origin/remote_tag_name` did not match any file(s) known to git.

Git tagコマンドを使用するとremote_tag_nameが見つかります。

353
Ryanqy

Gitのタグとは何かを説明することから始めましょう。

enter image description here

タグは、履歴内の特定の commit をラベル付けしてマークするために使用されます。
通常、リリースポイントをマークするために使用されます(例:v1.0など)。

タグはbranchと似ているように見えますが、 タグは を変更しません。
履歴の中で 直接 特定のcommit に指定します。

enter image description here


タグが自分のリポジトリにローカルに存在しない場合、タグをチェックアウトすることはできません。最初に、タグをローカルリポジトリに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  ...

Tagは与えられたコミットへのポインタにすぎないので、上記のすべては同じことをします。

enter image description here
出所: 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つあります。

# normal tag 
git tag 

# annotated tag
git tag -a

2との違いは、注釈付きタグを作成するときに、git commitのようにメタデータを追加できるということです。
名前、Eメール、日付、コメント、署名

enter image description here

タグを削除する方法

# delete any given tag
git tag -d <tag name>

# Don't forget to remove the deleted tag form the server with Push tags

特定のタグを複製する方法

与えられたタグの内容をつかむために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:

Cloneコマンドを使用する

Cloneコマンドに--branchを追加することでgitはshallow cloneをサポートするので、ブランチ名の代わりにタグ名を使用できます。 Gitは与えられたSHA-1をどのようにして関連するコミットに変換するかを知っています

# Clone a specific tag name
 git clone <url. --branch=<tag_name>

git clone --branch =

--branchはタグを取り、そのコミットでHEADを結果のリポジトリにデタッチすることもできます。

754
CodeWizard

特定のタグコードを取得するには、新しいブランチを追加して、タグコードを取得してください。私はコマンドでそれをやった:$git checkout -b newBranchName tagName

0
Rahul Khatri