Gitで特定のタグに戻すにはどうすればよいですか?


86

Gitブランチで古いコミットに戻す方法を知っていますが、タグで指定されたブランチの状態に戻すにはどうすればよいですか?私はこのようなものを想像しています:

git revert -bytag "Version 1.0 Revision 1.5"

これは可能ですか?


「ブランチを巻き戻す」(つまり、コミットを削除する)か、現在のブランチに新しいコミットを追加して、すべてのファイルが「そのタグで指定されたコミット時の状態」になるようにブランチを設定しますか?
torek 2013

どちらも仕事を
終わらせる

その場合は、この回答git checkout <id> .方法を使用してください。
torek 2013

回答:


133

Gitタグは、コミットへの単なるポインターです。したがって、HEAD、ブランチ名、またはハッシュをコミットするのと同じ方法でそれらを使用します。コミット/リビジョン引数を受け入れる任意のgitコマンドでタグを使用できます。で試して、git rev-parse tagnameそれが指すコミットを表示できます。

あなたの場合、少なくとも次の2つの選択肢があります。

  1. 現在のブランチを特定のタグにリセットします。

    git reset --hard tagname
    
  2. タグの状態に到達するために、上部にrevertcommitを生成します。

    git revert tag
    

ただし、マージコミットがある場合、これによりいくつかの競合が発生する可能性があります。


30
「gitrevert <tag>」は、作業コピーをそのバージョンに復元するのではなく、タグ付きコミットの変更を元に戻すと思います。
マット

追跡されていない/バージョン管理されていないファイルも削除するには、stackoverflow.com
Abdull 2018

3
@Mattが言ったように、受け入れられた答えは、タグ付けされたコミットの変更を元に戻すだけなので、単に間違っています。最善の策は、コミットハッシュを使用し、次の回答に従うことです:stackoverflow.com/a/4114122/6348485
SwaggaTing20年

こんにちは、「タグの状態に到達するために、上にrevert commitを生成する」と説明できますか?残念ながら、これが何を意味するのかわかりません。
ジョンリトル

12

git resetを使用します:

git reset --hard "Version 1.0 Revision 1.5"

(指定された文字列がタグであると想定)。


1

gitcheckoutを使用できます。

受け入れられた解決策を試しましたが、エラーが発生しました。 warning: refname '<tagname>' is ambiguous'

しかし、答えが述べているように、タグはコミットへのポインターのように動作するため、コミットハッシュの場合と同様に、タグをチェックアウトするだけで済みます。唯一の違いは、前にtags/:を付けることです。

git checkout tags/<tagname>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.