web-dev-qa-db-ja.com

Gitで古いコミットをタグ付けするにはどうすればいいですか?

私たちはgitを使うのが初めてなので、リポジトリの最初にタグを設定したいと思います。私たちの本番コードは最初のリポジトリと同じですが、それ以来コミットしています。最初のタグは、プロダクションを既知の安定した状態に「ロールバック」することを可能にします。

では、どのようにして任意の古いコミットにタグを追加するのでしょうか。

805
hogsolo

例:

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

9fceb02はコミットIDの先頭部分です。

git Push --tags Origin masterを使ってそれらをプッシュすることができます

現在のブランチのすべてのコミットIDを表示するためにgit logを実行できます。

Pro Gitの本に タグ付け に関する良い章もあります。

警告: これは現在の日付でタグを作成します(そしてその値は例えばgithubリリースページに表示されるものです)。タグをコミット日と同じ日付にしたい場合は、 別の回答 を参照してください。

1304
dkinzer

コードだけ

# 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コマンドを実行したとき)、not、コミットの日付を持つタグを作成します。 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

"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"
111
Phrogz

これを行う最も簡単な方法は

git tag v1.0.0 f4ba1fc

f4ba1fcはタグ付けしたいコミットのハッシュの先頭、v1.0.0はタグ付けしたいバージョンです。

74
PatrickNLT

使用するコマンド:

git tag v1.0 ec32d32

V1.0はタグ名、ec32d32はタグ付けしたいコミットです。

完了したら、次の方法でタグをプッシュできます。

git Push Origin --tags

参照:

Git(リビジョン管理):GitHubの特定の以前のコミットポイントにタグを付けるにはどうすればよいですか

28

_ ok _ 、あなたは単にすることができます:

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

e50f795をコミットするために tag: 1.0.2を追加したい場合は、単に以下のようにします。

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 

言及したくないタグがたくさんある場合は、単に次のようにします。

git Push Origin --tags

すべてのタグをまとめてプッシュする方法.

また、私はステップのより明確化のために、下の画像でステップを作成しました: creating tag on a commit hash

Hub にタグを追加したり、 SourceTree のようなツールを使用して、前の手順を回避することもできます。この場合はmy Bitbucket にログインします。そこから。

  1. あなたのブランチに行き、タグを追加したい commit を見つけてクリックしてください。

find your commit in bitbucket

  1. 右側の commitページ で、No tagsと表示されている場所を見つけ、+アイコンをクリックします。

find where it says No tags

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

add tag name

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

enter image description here

21
Alireza

これは古い質問です、そして答えはすでにすべての仕事を与えました、しかし考慮することができる新しいオプションもあります。

SourceTreeを使用してgitリポジトリを管理している場合は、コミットを右クリックしてタグを追加することができます。もう1回クリックすると、タグをOriginのブランチに直接送信することもできます。

10

他の人の答えを基にして、タグの日付を実際に発生した日付に設定し、注釈付きタグを使用し、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はコミットハッシュに設定されます。

4
stason

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

git checkout 9fceb02
$env:GIT_COMMITTER_DATE = git show --format=%aD | Select -First 1
git tag v1.2
git checkout master
2
ccoxtn