Verständnisfrage zu git



  • Ah, danke, langsam wird es sehr viel klarer.
    Ich glaube ich habe aber auch im GitHub Mist gebaut, dort habe ich zwei Mal gepusht, einmal in HEAD, einmal in master, das sieht jetzt so aus:

    http://img1.uploadscreenshot.com/images/orig/3/9008122558-orig.jpg

    und:

    http://img1.uploadscreenshot.com/images/orig/3/9008193320-orig.jpg

    Habe ich jetzt im GitHub zwei branches, einen HEAD einen master?
    Beide Namen auch wieder willkürlich und ohne Sonderbedeutung?

    Die Lösung mit dem

    $ git fetch upstream
    $ git merge upstream/master
    

    werde ich wählen, aber ich muss erst mal einen sauberen Zustand im GitHub erhalten, bevor mich die Verwirrung völlig vernebelt.

    EDIT: ich muss dazusagen, dass ich beim pushen zu GitHub TortoiseGit verwendet hatte und nicht genau wusste was ich tat.
    Kann es sein, dass ich dabei einen branch "HEAD" angelegt habe, also dass dieses "HEAD" gar keine Sonderbedeutung hat (s.o.)?



  • franc schrieb:

    http://img1.uploadscreenshot.com/images/orig/3/9008122558-orig.jpg

    und:

    http://img1.uploadscreenshot.com/images/orig/3/9008193320-orig.jpg

    Nimm doch bitte png für Screenshots, dann wird die Datei kleiner und das Bild nicht so unscharf. 🙂

    franc schrieb:

    Kann es sein, dass ich dabei einen branch "HEAD" angelegt habe, also dass dieses "HEAD" gar keine Sonderbedeutung hat (s.o.)?

    Ja, genau danach sieht es aus. Wenn du sicher bist, dass dieser Branch gelöscht werden kann, kannst du ihn von github löschen mit
    $ git push dein_github_repo :HEAD

    Der Doppelpunkt vor HEAD ist wichtig.

    HEAD hat zwar in git eine Sonderbedeutung, denn es zeigt auf den aktuell ausgecheckten commit. Allerdings hält git den Nutzer nicht davon ab, einen Branch namens "HEAD" anzulegen.



  • Christoph schrieb:

    ...Nimm doch bitte png für Screenshots, dann wird die Datei kleiner und das Bild nicht so unscharf. :)...

    Da habe ich gar keinen Einfluss darauf, das ist dieser Dienst uploadscreenshot.com, der erstellt das aus der Zwischenablage selbst.

    Christoph schrieb:

    ...HEAD hat zwar in git eine Sonderbedeutung, denn es zeigt auf den aktuell ausgecheckten commit. Allerdings hält git den Nutzer nicht davon ab, einen Branch namens "HEAD" anzulegen.

    Ja, das hat geklappt!
    Anscheinend habe ich mit TortoiseGit einen branch namens HEAD erstellt, den ich jetzt erfolgreich gelöscht habe.
    Langsam lichtet sich der Nebel, die Sonne geht auf 🙂

    Ich habe gemacht:

    git push origin :HEAD
    

    Jetzt lösche ich lokal alles und mach einen neuen pull.



  • franc schrieb:

    Christoph schrieb:

    ...Nimm doch bitte png für Screenshots, dann wird die Datei kleiner und das Bild nicht so unscharf. :)...

    Da habe ich gar keinen Einfluss darauf, das ist dieser Dienst uploadscreenshot.com, der erstellt das aus der Zwischenablage selbst.

    Dann würde ich einen Dienst nehmen, jpeg für Screenshot ist wirklich nicht nett gegenüber dem, der es anschauen soll.

    franc schrieb:

    Christoph schrieb:

    ...HEAD hat zwar in git eine Sonderbedeutung, denn es zeigt auf den aktuell ausgecheckten commit. Allerdings hält git den Nutzer nicht davon ab, einen Branch namens "HEAD" anzulegen.

    Ja, das hat geklappt!
    Anscheinend habe ich mit TortoiseGit einen branch namens HEAD erstellt, den ich jetzt erfolgreich gelöscht habe.
    Langsam lichtet sich der Nebel, die Sonne geht auf 🙂

    Sehr schön. Es ist bei git zum Glück ziemlich schwer, wirklich Daten zu verlieren, solange sie irgendwann mal committet wurden.



  • Christoph schrieb:

    ...jpeg für Screenshot ist wirklich nicht nett gegenüber dem, der es anschauen soll...

    Ich kann da gar keine Unschärfe erkennen, die Bilder sind doch einwandfrei scharf!?

    Christoph schrieb:

    ...Sehr schön. Es ist bei git zum Glück ziemlich schwer, wirklich Daten zu verlieren, solange sie irgendwann mal committet wurden.

    Das beruhigt mich 🙂
    Natürlich habe ich aber dennoch vor dem Löschen des lokalen Repositorys gesichert 😉
    Jetzt habe ich auch, deinem Rad folgend, mit dem remote Original gemerged mit:

    git merge upstream/master
    

    Da musste ich ein paar Dateien händisch korrigieren, aber dann ging es und ich habe jetzt in meinem lokalen und remote Repository einen Zustand mit meinen Änderungen und denen vom Original.
    Das war ein wichtiger Tipp, glaube ich.
    Das hätte ich nämlich nicht gemacht und mich immer weiter vom Original entfernt, bis es kaum mehr zu mergen gewesen wäre, fürchte ich.
    Je nach dem natürlich nur, wie eifrig die Original-Entwickler überhaupt ändern 😉

    Es ist für mich noch leicht verwirrend, dass es mehrere Zustände gibt, lokal, remote, remote upstream usw.

    Ich habe auch gesehen, was ich bei TortoiseGit falsch gemacht habe:

    http://www.abload.de/img/head80ko8.png

    Ich hatte hier HEAD ausgewählt und damit wohl einen neuen branch erstellt.
    Komisch dass das so geht.



  • franc schrieb:

    Ich hatte hier HEAD ausgewählt und damit wohl einen neuen branch erstellt.
    Komisch dass das so geht.

    Das funktioniert, weil ein Branch lokal und remote nicht denselben Namen haben muss. Du kannst zum Beispiel
    $ git push origin master:foo
    ausführen. Dann wird der Branch "master" im lokalen Repository auf den Branch "foo" gepusht im Repository namens "origin". Wenn der Branch "foo" im Repository "origin" nicht existiert, wird er angelegt.

    Was tortoisegit gemacht hat, war also vermutlich
    $ git push origin master:HEAD


Anmelden zum Antworten