[解決済み] git-ls-remoteをリストアップする際、タグ名の後に"^{}"があるのはなぜですか?重複
質問
を実行すると
git ls-remote
を実行すると、オリジンリポジトリのリビジョンのリストが出力されます。なぜか、すべてのタグで2つのリビジョンが表示され、同じタグの2つ目のリビジョンでは、タグ名に
^{}
git ls-remote
From [email protected]:andris9/zzzzzz.git
d69e66d7c915b9682618b7f304b80cc0ae4c7809 HEAD
....
bb944682f7f65272137de74ed18605e49257356c refs/tags/v0.1.6
771a930dc0ba86769d6862bc4dc100acc50170fa refs/tags/v0.1.6^{}
a72251d945353a360087eb78ee75287c38a1c0e6 refs/tags/v0.1.7
d69e66d7c915b9682618b7f304b80cc0ae4c7809 refs/tags/v0.1.7^{}
でタグを作成しています。
git tag -a v0.1.8 -m "tag message"
git push --tags
の例から
git-ls-remote
マンページ
のような重複したタグはないので、もしかしたら私のやり方が間違っているのでしょうか?
どのように解決するのですか?
タグは2種類あります。
- ライトウェイト - は、単に何らかのオブジェクト(コミットなど)を指す参照に過ぎません。
- 注釈付き - はそれ自体で独立した git オブジェクトであり、著者やコミッター、コミットメッセージなど、より多くの情報を保存します。
を使用した場合
git tag -a
を使ってタグを作成すると、git はあなたに代わってアノテーションされたタグを作成するでしょう。
は
^{}
は、タグを参照解除するために使われる構文です。で説明されています。
gitrevisions
.
-
タグオブジェクトと共に使用された場合、git はタグでないオブジェクトを見つけるまで再帰的にタグを参照します。
-
タグでないオブジェクトで使われた場合、何もしません。
^{}
は
refs/tags/v0.1.6
はタグオブジェクトを指しています。
bb944682f7f65272137de74ed18605e49257356c
を指し、それが
771a930dc0ba86769d6862bc4dc100acc50170fa
(非タグオブジェクト)を指し、これはタグを作成したときのコミット情報を保存していると推測されます。
ということは
refs/tags/v0.1.6^{}
を実行すると、git はそのタグをデリファレンスして
771a930dc0ba86769d6862bc4dc100acc50170fa
- に解決します。
もあります。
git show-ref
コマンドもあります。これはタグだけをリストアップし、オプションで次のように参照解除するために使われます。
$ git show-ref --tags
bb944682f7f65272137de74ed18605e49257356c refs/tags/v0.1.6
a72251d945353a360087eb78ee75287c38a1c0e6 refs/tags/v0.1.7
$ git show-ref --tags --dereference
bb944682f7f65272137de74ed18605e49257356c refs/tags/v0.1.6
771a930dc0ba86769d6862bc4dc100acc50170fa refs/tags/v0.1.6^{}
a72251d945353a360087eb78ee75287c38a1c0e6 refs/tags/v0.1.7
d69e66d7c915b9682618b7f304b80cc0ae4c7809 refs/tags/v0.1.7^{}
これを確認するために
git show
コマンドを実行すると、git オブジェクトの詳細が表示されます。
これは私のテスト用 git リポジトリの一つからの情報です。
$ git show 43f9a98886ba873c0468c608f24c408b9991414f
tag v0.1
Tagger: Ash <tuxdude@OptimusPrime>
Date: Sun Jul 15 00:14:43 2012 -0700
Tagging Stable repo 0.1 :)
-----BEGIN PGP SIGNATURE-----
<PGP-SIGNATURE>
-----END PGP SIGNATURE-----
commit e55df25f2321a6b2c9a02fa80ccba7cbe3c38c08
Merge: 796efcd 58e3a4d
Author: Ash <tuxdude@OptimusPrime>
Date: Sun Jul 15 00:02:44 2012 -0700
Merge branch 'dev' into 'master' for stable 0.1.
$ git show e55df25f2321a6b2c9a02fa80ccba7cbe3c38c08
commit e55df25f2321a6b2c9a02fa80ccba7cbe3c38c08
Merge: 796efcd 58e3a4d
Author: Ash <tuxdude@OptimusPrime>
Date: Sun Jul 15 00:02:44 2012 -0700
Merge branch 'dev' into 'master' for stable 0.1.
関連
-
[解決済み】git error: failed to push some refs to remote
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] Git で現在のブランチ名を取得するには?
-
[解決済み] Git を使ってタグをリモートリポジトリにプッシュするには?
-
[解決済み] Git のローカルコミットを破棄する
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] 古いリモート git ブランチのクリーンアップ
-
[解決済み] リモートリポジトリに存在しないローカルのgitタグを削除する
-
[解決済み】Gitで複数のコミットの著者名やコミッター名、Eメールを変更する方法は?
-
[解決済み] フォルダからサブモジュールのリポジトリを作成し、その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 pull エラー: .git/FETCH_HEAD を開けない: パーミッションが拒否されました。
-
git push は最新の解決策を提供します。
-
Git error: cannot spawn ssh.の回避策。そのようなファイルやディレクトリはありません
-
GitのPlease enter a commit messageで、このマージが必要な理由を説明してください。
-
gitの利用(ssh鍵の作成とgithubの利用)。
-
git のコンパイルとインストールの問題を解決する fatal: https のリモートヘルパーが見つからない
-
[解決済み] リモートタグを見るには?
-
[解決済み] 単一ファイルのマージをやり直す
-
[解決済み] Gitでは、これらの言葉はどのような意味ですか?リポジトリ、フォーク、ブランチ、クローン、トラック?
-
[解決済み] IntelliJのShelveとGit stashの違いは何ですか?