Link Search Menu Expand Document

Lösung zu Schritt 1 - Tags erstellen

Erstelle ein einfaches Tag simple1 auf HEAD und ein annotated Tag annotated1 auf HEAD~1. Sieh zuerst das Log und dann beide Tags einzeln an (git show an).

mein-klon $ git tag simple1


mein-klon $ git tag annotated1 HEAD~1 -m 'Mit Beschreibung'


mein-klon $ git log --oneline --decorate

af500f3 (HEAD -> main, tag: simple1, origin/main, origin/HEAD) : Just editing
d4d7875 (tag: v0.1, tag: annotated1) Initial edit before cloning

mein-klon $ git show simple1 --no-patch

commit af500f303ef2cc7b770c560190d4072d2c879972
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000

: Just editing

Beim annotated Tag werden zusätzlich Beschreibung und Metadaten angezeigt:

mein-klon $ git show annotated1 --no-patch

tag annotated1
Tagger: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000

Mit Beschreibung

commit d4d7875a179ac89a40ed04b1e6cf33a5111fcedf
Author: bjoern <kapitel26blog@gmail.com>
Date: Thu Jul 29 00:00:00 2021 +0000

Initial edit before cloning

Lösung zu Schritt 2 - Tags holen

Einfach per pull.

mein-klon $ git pull

Updating af500f3..06d348f
Fast-forward
foobar | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
From ../blessed
af500f3..06d348f main -> origin/main
* [new tag] v0.2 -> v0.2
* [new tag] v0.3 -> v0.3
* [new tag] v1.0 -> v1.0

Lösung zu Schritt 3 - Tags pushen

Beim einfachen git push werden keine Tags übertragen. Übertrage zunächste gezielt das Tag simple1 mit einem Push und danach alle weiteren Tags mit einem weiteren Push

mein-klon $ git push

Everything up-to-date

mein-klon $ git push origin simple1

To ../blessed.git
* [new tag] simple1 -> simple1

mein-klon $ git push --tags

To ../blessed.git
* [new tag] annotated1 -> annotated1

Lösung zu Schritt 4 - Manipulieren

Überschreibe das Tag v0.1, so dass es auf denHEAD zeigt. Pushe das Tag. Gehe in das Verzeichnis ../anderer-klon und hole das Tag mit pull. Schaue ins Log, um zu überprüfen, dass das Tag aktualisiert wurde.

mein-klon $ # Something else


mein-klon $ git commit -am "`foobar`: Something else "

[main 038ab4f] : Something else
1 file changed, 1 insertion(+), 1 deletion(-)
/bin/bash: line 1: foobar: command not found

mein-klon $ git tag v0.1 -f -m 'Moved later on'

Updated tag 'v0.1' (was 3765c1c)

mein-klon $ git push origin v0.1

To ../blessed.git
! [rejected] v0.1 -> v0.1 (already exists)
error: failed to push some refs to '../blessed.git'
hint: Updates were rejected because the tag already exists in the remote.

mein-klon $ git push -f origin v0.1 

To ../blessed.git
+ 3765c1c...1f8ce21 v0.1 -> v0.1 (forced update)

mein-klon $ git log --oneline --decorate -3

038ab4f (HEAD -> main, tag: v0.1) : Something else
06d348f (origin/main, origin/HEAD) : Do something
27e367e (tag: v1.0) : Improve even more

.. $ cd anderer-klon


anderer-klon $ git log --oneline --decorate

06d348f (HEAD -> main, origin/main) : Do something
27e367e (tag: v1.0) : Improve even more
ccb6eea : Improve it
b9ffddc (tag: v0.3) : First edit after cloning
af500f3 : Just editing
d4d7875 (tag: v0.2, tag: v0.1) Initial edit before cloning

anderer-klon $ git pull

Already up to date.
From ../blessed
* [new tag] annotated1 -> annotated1
* [new tag] simple1 -> simple1

anderer-klon $ git pull --tags

From ../blessed
! [rejected] v0.1 -> v0.1 (would clobber existing tag)

anderer-klon $ git pull -f --tags

Already up to date.
From ../blessed
t [tag update] v0.1 -> v0.1

anderer-klon $ git log --oneline --decorate

06d348f (HEAD -> main, origin/main) : Do something
27e367e (tag: v1.0) : Improve even more
ccb6eea : Improve it
b9ffddc (tag: v0.3) : First edit after cloning
af500f3 (tag: simple1) : Just editing
d4d7875 (tag: v0.2, tag: annotated1) Initial edit before cloning

anderer-klon $ cd ..


Zur Aufgabe

Zum Überblick