私たちはgitに慣れていないので、リポジトリの最初にタグを設定したいと思っています。 私たちの本番コードは最初のリポジトリと同じですが、その後にコミットを行っています。 最初にタグを設定しておけば、本番環境を既知の安定した状態にロールバックすることができます。
では、任意の古いコミットにタグを追加するにはどうすればいいのでしょうか?
例
git tag -a v1.2 9fceb02 -m "Message here"
ここで、9fceb02
はコミットIDの先頭部分です。
このタグをプッシュするには、git push origin v1.2
を使用します。
git log` を実行すると、現在のブランチのすべてのコミット ID を表示することができます。
Pro Git Bookには、taggingに関する良い章があります。
Warning: これは、現在の日付 のタグを作成します (この値は、たとえば GitHub のリリースページに表示されるものです)。 タグの日付をコミット日にしたい場合は、another answerをご覧ください。
# Set the HEAD to the old commit that we want to tag
git checkout 9fceb02
# temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \
git tag -a v1.2 -m"v1.2"
# set HEAD back to whatever you want it to be
git checkout master
dkinzerさんの回答では、日付がコミットの日付ではなく、現在の日付(git tag
コマンドを実行したとき)のタグが作成されます。タグ`のGitヘルプには、_"On Backdating Tags"_というセクションがあり、そこには次のように書かれています。
_他のVCSから変更を取り込んで、自分の作品のメジャーリリースのタグを追加したい場合、タグオブジェクトの中に埋め込む日付を指定できると便利です。タグオブジェクトの中のこのようなデータは、たとえばgitwebインターフェイスでのタグの順序に影響します。
_今後のタグオブジェクトで使用する日付を設定するには、環境変数
GIT_COMMITTER_DATE
を設定します (設定可能な値については後述しますが、最も一般的な形式は "YYYY-MM-DD HH:MM" です)._.
_例えば、以下のようになります。
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
このページ "How to Tag in Git" を見ると、HEAD のコミットの時間を抽出する方法が書かれています。
git show --format=%aD | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700
特定のコミットの日付を抽出するには、次のようにします。
GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"
しかし、コミットを2回繰り返すのではなく、HEADをそのコミットに変更して、両方のコマンドで暗黙的に使用する方が簡単だと思われます。
git checkout 9fceb02
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"
最も簡単な方法は
git tag v1.0.0 f4ba1fc
です。
ここで、f4ba1fc
はタグ付けしたいコミットのハッシュの先頭、v1.0.0
はタグ付けしたいバージョンを表しています。