[解決済み] gitタグとは何か、タグの作成方法とgitリモートタグのチェックアウト方法
質問
リモートgitタグをチェックアウトする際、以下のようなコマンドを使用します。
git checkout -b local_branch_name origin/remote_tag_name
このようなエラーが発生しました。
<ブロッククオート
error: pathspec
origin/remote_tag_name
は、git が知っているどのファイルにも一致しませんでした。
git tag コマンドを使用すると remote_tag_name が見つかります。
どのように解決するのですか?
まず、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
# annotated tag
$ git tag -a
この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 を使用する代わりに、単純に
タグ名
オプション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コマンドを使用する
git は
シャロークローン
を追加することで
--branch
をcloneコマンドに追加すると、ブランチ名の代わりにタグ名を使用できます。Git は、指定された SHA-1 を関連するコミットに "translate" する方法を知っています。
# Clone a specific tag name using git clone
$ git clone <url> --branch=<tag_name>
git clone --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
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] リモートタグを削除する方法を教えてください。
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み] Git を使ってタグをリモートリポジトリにプッシュするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Gitマージで「すでに最新」と報告されるが、違いはある
-
git push reports an error ! [リモート拒否] master -> master (受信前のフックが拒否されました)
-
[解決済み] 複数のgitコミットを元に戻すには?
-
[解決済み] GitHubに空のブランチを作成する
-
[解決済み] Git pull - マージする前に移動または削除してください。
-
[解決済み] git commit signing failed: secret key not available.
-
[解決済み] GitHubです。パーミッションが拒否されました (公開鍵)。
-
[解決済み] git リモートリポジトリには、ローカルブランチにマージされていないコミットが含まれています。
-
[解決済み] Git のタグとブランチはどう違うのですか?ここではどちらを使うべきですか?
-
[解決済み] タグから新しいブランチを作成するには?