Wie markiert man einen älteren Commit in Git?

Wir sind neu in Git, und ich möchte ein Tag am Anfang unseres Repositorys setzen. Unser Produktionscode ist derselbe wie das Anfangsrepository, aber wir haben seither Änderungen vorgenommen. Ein Tag am Anfang würde es uns ermöglichen, die Produktion auf einen bekannten, stabilen Zustand zurückzusetzen.

Wie kann man also ein Tag zu einem beliebigen, älteren Commit hinzufügen?

Lösung

Beispiel:

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

Dabei ist "9fceb02" der erste Teil der Commit-ID.

Sie können das Tag dann mit "git push origin v1.2" pushen.

Sie können git log verwenden, um alle Commit-IDs in Ihrem aktuellen Zweig anzuzeigen.

Es gibt auch ein gutes Kapitel über tagging in dem Pro Git Buch.

Warnung: Dies erzeugt Tags mit dem aktuellen Datum (und dieser Wert wird z.B. auf einer GitHub-Releases-Seite angezeigt). Wenn Sie möchten, dass das Tag mit dem Übergabedatum datiert wird, sehen Sie sich bitte andere Antwort an.

Kommentare (6)

Nur der Code

# 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

Details

Die Antwort von @dkinzer erzeugt Tags, deren Datum das aktuelle Datum ist (wenn Sie den Befehl git tag ausgeführt haben), nicht das Datum des Commits. Die Git-Hilfe für tag hat einen Abschnitt _"On Backdating Tags"_ der besagt:

Wenn Sie einige Änderungen aus einem anderen VCS importiert haben und Tags für die Hauptversionen Ihrer Arbeit hinzufügen möchten, ist es nützlich, das Datum angeben zu können, das in das Tag-Objekt eingebettet werden soll; solche Daten im Tag-Objekt beeinflussen zum Beispiel die Reihenfolge der Tags in der Gitweb-Schnittstelle.

Um das in zukünftigen Tag-Objekten verwendete Datum festzulegen, setzen Sie die Umgebungsvariable GIT_COMMITTER_DATE (siehe die spätere Diskussion möglicher Werte; die gebräuchlichste Form ist "YYYY-MM-DD HH:MM").

Beispiel:

$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1

Die Seite "How to Tag in Git" zeigt uns, dass wir die Zeit des HEAD-Commits über extrahieren können:

git show --format=%aD  | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700

Wir könnten das Datum eines bestimmten Commits über:

GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"

Anstatt jedoch den Commit zweimal zu wiederholen, scheint es einfacher zu sein, einfach den HEAD auf diesen Commit zu ändern und ihn implizit in beiden Befehlen zu verwenden:

git checkout 9fceb02 

GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"
Kommentare (4)

Am einfachsten ist dies zu erreichen durch

git tag v1.0.0 f4ba1fc

wobei f4ba1fc der Anfang des Hashes der Übergabe ist, die Sie taggen wollen und v1.0.0 die Version ist, die Sie taggen wollen.

Kommentare (0)