[解決済み] なぜ、軽量タグと注釈付きタグにこだわる必要があるのでしょうか?
質問
昨年、日常的に使うVCSをSubversionからGitに切り替えましたが、まだ"Git-think"の細かい点を把握しようとしているところです。
最近気になるのは、quot;lightweight" と annotated と signed のタグの比較です。 しかし、私が見つけたその理由の説明は、いつも次のどちらかに集約されるようです。 ベストプラクティスだからです。 または "違うから" . 残念ながら、それらは、以下のことを知らずに、非常に満足のいかない議論です。 なぜ ベストプラクティスなのか、その違いがどのようなものなのか。 関連 を、私のGitの使い方と照らし合わせてみてください。
私が初めてGitに乗り換えたとき、軽量タグはスライスしたパン以来の最高のもののように思えました。 しかし、世界のGitエキスパートが任意に注釈付きタグを好むというのは信じられませんね。 では、この騒動は何なのでしょうか?
(ボーナスポイント: なぜタグに署名する必要があるのでしょうか?)
EDIT
私は、これまで
説得成功
誰がいつタグ付けしたかを知ることは重要です。 続いて、良いタグ注釈について何かアドバイスがあれば教えてください。 どちらも
git tag -am "tagging 1.0" 1.0
とか、前のタグ以降のコミットログをまとめようとすると、戦略を失うような気がします。
解決方法は?
注釈付きタグの大きな利点は、誰が作ったのかが分かることです。コミットと同じように、誰が作ったのかがわかると嬉しいことがあります。もしあなたが開発者で、v1.7.4 がタグ付けされた (準備ができたと宣言された) ことを知り、確信が持てない場合、誰に相談しますか? 注釈付きタグに名前がある人です! (もしあなたが不信感の強い世界に住んでいるのなら、これによって、人々がタグを付けてはいけないものを付けてしまうのを防ぐこともできます)。あなたが消費者であれば、その名前は権威の証となるのです。
最終コミットがいつ行われたかだけでなく、そのバージョンがいつリリースされたかを知ることができるのは、時として素晴らしいことです。そして時には、メッセージが役に立つこともあります。その特定のタグの目的を説明するのに役立つかもしれません。たとえば、リリース候補のタグには、ちょっとしたステータスやToDoリストが含まれているかもしれません。
タグに署名することは、他のものに署名するのと同じように、偏執的な人のためにもう1つのセキュリティレベルを提供するものです。ほとんどの人はこれを使うことはないでしょうが、ソフトウェアをコンピュータに入れる前にすべてを確認したいのであれば、必要かもしれません。
編集する
タグの注釈に何を書くかについては、おっしゃるとおりで、あまり有用なことは書いていないのが現状です。バージョン番号のタグは、そのバージョンを示すものだと暗黙のうちに理解されていますし、他の場所で変更履歴に満足しているのであれば、そこに入れる必要はないでしょう。この場合、本当に重要なのは、タグ付けと日付です。他に考えられるのは、テストスイートからの承認スタンプのようなものでしょうか。git.gitのタグを見てください。どれも、"Git 1.7.3 rc1" のように書かれているだけです。
しかし、あまり目立たない名前のタグであれば、メッセージはもっと重要になる可能性があります。あるユーザーやクライアントのための特別な目的のバージョン、バージョン以外の重要なマイルストーン、あるいは(上記のように)リリース候補に追加情報をタグ付けすることを想定しています。そうすれば、メッセージはより有用なものになります。
関連
-
[解決済み】gitがローカルバージョンをリモートバージョンに置き換える
-
[解決済み】fatal: 有効なオブジェクト名ではない: 'master'
-
[解決済み】Githubの認証に失敗した - ... GitHubはシェルアクセスを提供しない
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
[解決済み】未マージファイルがあるため、Gitマージができない
-
[解決済み] リモートから<branch name>とマージするように構成が指定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] git initを2回実行すると、リポジトリが初期化されますか?それとも既存のリポジトリを再初期化しますか?
-
[解決済み] Gitのプッシュエラーです。Unable to unlink old (Permission denied)です。
-
[解決済み】Gitコミットメッセージ。50/72 フォーマット
最新
-
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 revert <hash> not allowed due to a merge but no -m option was given.
-
[解決済み】マージ後のコミットでGitエラー - fatal: マージ中に部分コミットができない
-
[解決済み】GitHubで空のブランチを作成する
-
[解決済み] リモートの <ブランチ名> とマージするように設定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] git ls-remote と git ls-remote origin の違い。
-
[解決済み] git initを2回実行すると、リポジトリが初期化されますか?それとも既存のリポジトリを再初期化しますか?
-
[解決済み] Gitのプッシュエラーです。Unable to unlink old (Permission denied)です。
-
[解決済み] Git を使ってタグをリモートリポジトリにプッシュするには?
-
[解決済み】全ての(軽量)タグの作成日を表示するgitコマンド
-
[解決済み] Git リポジトリにあるすべてのタグを、作成日順にリストアップするにはどうしたらいいですか?