git タグとは何か、タグの作成方法、git リモート タグのチェックアウト方法 質問する

git タグとは何か、タグの作成方法、git リモート タグのチェックアウト方法 質問する

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

git checkout -b local_branch_name origin/remote_tag_name

次のようなエラーが発生しました:

エラー: pathspec はorigin/remote_tag_namegit に認識されているファイルと一致しませんでした。

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。上で説明したように、タグは他のコミットと同じなので、checkoutSHA-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

カンニングペーパー:ここに画像の説明を入力してください


おすすめ記事