Gitで古いコミットにタグを付ける方法は?


949

gitは初めてなので、リポジトリの最初にタグを設定します。私たちの生産コードは最初のリポジトリと同じですが、それ以来コミットを行ってきました。最初にタグを付けると、生産を既知の安定した状態に「ロールバック」できます。

では、任意の古いコミットにタグを追加する方法は?


ローカルとリモートで古いタグを削除するためのヘルプを探してここに来て、最終的にこれが便利だと思い
Aleksander Lidtke

1
そして、Gitを使用してリモートリポジトリにタグをプッシュする方法を忘れないでくださいGitは特別なことをしないとタグをプッシュしないからです。
jww 2018

回答:


1511

例:

git tag -a v1.2 9fceb02 -m "Message here"

9fceb02コミットIDの最初の部分はどこですか。

次に、を使用してタグをプッシュできgit push origin v1.2ます。

git log現在のブランチのすべてのコミットIDを表示することができます。

プロGitブックには、タグ付けに関する優れた章もあります。

警告:これにより、現在の日付のタグが作成されます(その値は、たとえばGitHubリリースページに表示されます)。タグにコミット日付を付けたい場合は、別の回答をご覧ください。


45
これはgitkの右クリックメニューでも行うことができます。これがSHA1を見つける方法である場合に便利です。
Cascabel

62
省略-aして-m "Message here"部品を使用して、メッセージを追加しない場合:git tag v1.2 9fceb02
devius

3
完全なコミットIDも使用できます。
j08lue 2017年

1
@devius使用しての違いは何だ-aとは-m。が使用されて-aいる場合、manページは暗黙に示されているよう-mです。
ジョンストラット

7
git push --tags origin masterローカルブランチのすべてのタグをリモートにプッシュします。git push origin <tag_name>作成したタグをプッシュすることをお勧めします。参照してください:stackoverflow.com/a/5195913/452708git-scm.com/book/en/v2/Git-Basics-Tagging
Abhijeet

144

ただのコード

# 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ヘルプにtagは、「Backdatingタグについて」というセクションがあります。

別の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"

4
@ColonelPanic、あなたの願いは私の命令です!github.com/lucasrangit/git-custom-commands/blob/master/...
ルーカス

Githubを使用してリリースを管理し、プロジェクトの/ tagsページに表示される日付を気にする場合は、GIT_COMMITTER_DATEの設定が特に重要です。
レスリー2017

2
@ColonelPanic私はあなたにしゃれの賛成票を与えました、そして私があなたにコードのための2番目のものを与えたいと思いますが、githubスターがしなければなりません。
andyhasit

96

これを行う最も簡単な方法は次のとおりです。

git tag v1.0.0 f4ba1fc

f4ba1fcタグにしたいコミットのハッシュの始まりであることと、v1.0.0あなたがタグにするバージョンであること。


完璧な感謝:)。
Saleh Enam Shohag


36

OK、あなたは単に行うことができます:

git tag -a <tag> <commit-hash>

したがって、タグ 1.0.2をcommit に追加する場合はe50f795、単に次のようにします。

git tag -a 1.0.2 e50f795

また、次のようにを使用して、最後にメッセージ追加します-m

git tag -a 1.0.2 e50f795 -m "my message"

結局のところ、それをにプッシュする必要があります。それremoteを行うには、単に次のようにします。

git push origin 1.0.2 

1つずつ説明したくないタグが多数ある場合は、次のようにしてください。

git push origin --tags

すべてのタグを一緒にプッシュするには...

また、手順をより明確にするために、以下の画像に手順を作成しました。 コミットハッシュにタグを作成する

前の手順を回避するために、ハブまたはSourceTreeなどのツールを使用し てタグをddすることもできます。この場合、Bitbucketにログインし、そこから実行します。

  1. ブランチに移動して、タグを追加するコミットを見つけてクリックします。

bitbucketでコミットを見つけます

  1. コミットページ、右側に、それが言うところを見つけるNo tagsと、クリックし+たアイコン:

タグなしと書かれている場所を見つける

  1. タグ名ボックスにタグを追加します。

タグ名を追加

  1. これで、タグが正常に作成されたことがわかります。

ここに画像の説明を入力してください


11

これは古い質問であり、回答はすべての作業に既に与えられていますが、考慮できる新しいオプションもあります。

SourceTreeを使用してgitリポジトリを管理している場合は、コミットを右クリックしてタグを追加できます。別のマウスクリックで、分岐元のタグにタグを直接送信することもできます。


6

他の回答に基づいて、タグの日付を実際に発生した日付に設定し、注釈付きのタグを使用して、必要としないワンライナーソリューションを次に示しますgit checkout

tag="v0.1.3" commit="8f33a878" bash -c 'GIT_COMMITTER_DATE="$(git show --format=%aD $commit)" git tag -a $tag -m $tag $commit'
git push --tags origin master

ここでtag、目的のタグ文字列とcommitコミットハッシュに設定されます。


3

@Phrogz の答えは素晴らしいですが、Windowsでは動作しません。Powershellを使用して、古いコミットにコミットの元の日付をタグ付けする方法は次のとおりです。

git checkout 9fceb02
$env:GIT_COMMITTER_DATE = git show --format=%aD | Select -First 1
git tag v1.2
git checkout master
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.