Nochmal eine Frage zu GIT

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Nochmal eine Frage zu GIT

Beitrag von fliegermichl »

Ich hab einige Änderungen gemacht und diese auch commitet und per push auf den Server übertragen.
Nach einigen Tagen ist mir bewusst geworden, daß ich mehr verschlechtert als verbessert habe und hab per
git reset --hard <commitid> alles ab einem bestimmten commit in die Tonne geworfen.

Dann hab ich etwas vorsichtiger gehandelt und wieder neue commits erstellt.
Wenn ich das jetzt aber per git push auf den Server laden will, bekomme ich Fehlermeldungen und ich soll mir mit git pull den Mist erst wieder runterladen.

Ich konnte das beheben, indem ich in der config Datei des Repos unter [receive] die Option denyNonFastforwards von true auf false umgestellt hab und dann per git push -f
hochgeladen habe.

Gibt es eine Option, git zu sagen, vergiss bitte auch auf dem Server alle Änderungen ab commit xy?

Ich934
Lazarusforum e. V.
Beiträge: 317
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Nochmal eine Frage zu GIT

Beitrag von Ich934 »

Ja, so was geht, wenn es unbedingt sein muss. ;-)

https://stackoverflow.com/questions/133 ... m-a-branch

cu tb
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
photor
Beiträge: 445
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Nochmal eine Frage zu GIT

Beitrag von photor »

Moin,

Vorsicht bitte. Ich bin KEIN Git-Spezialist. Nutze das auch nur privat.
fliegermichl hat geschrieben:
Fr 22. Mär 2024, 08:52
Ich hab einige Änderungen gemacht und diese auch commitet und per push auf den Server übertragen.
Nach einigen Tagen ist mir bewusst geworden, daß ich mehr verschlechtert als verbessert habe und hab per
git reset --hard <commitid> alles ab einem bestimmten commit in die Tonne geworfen.

Dann hab ich etwas vorsichtiger gehandelt und wieder neue commits erstellt.
Wenn ich das jetzt aber per git push auf den Server laden will, bekomme ich Fehlermeldungen und ich soll mir mit git pull den Mist erst wieder runterladen.

Ich konnte das beheben, indem ich in der config Datei des Repos unter [receive] die Option denyNonFastforwards von true auf false umgestellt hab und dann per git push -f
hochgeladen habe.

Gibt es eine Option, git zu sagen, vergiss bitte auch auf dem Server alle Änderungen ab commit xy?
Ich würde auch mein Git-Repo nicht leichtfertig "säubern" - auf das, was drin steht, kann man immer mal wieder zugreifen. Weg ist dagegen weg..

Wäre es eine eine Option, die neuen Änderungen als einen neuen Branch (z.B. "Develop") zu speicher? Dann sollten beide Varianten im Repo zu finden (und auscheckbar) sein. Anschließend setzt du den Master-Branch auf diesen neuen Zweig und entwickelst da weiter.

Ciao,
Photor

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Nochmal eine Frage zu GIT

Beitrag von Mathias »

Wen man mal versehentlich eine Datei auf github rauf lädt, welche niemanden was angeht. Kann man diese einte Datei löschen, ohne das man einen knallharten "git reset --hard <commitid>" machen muss ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

ArchChem
Beiträge: 83
Registriert: Mo 11. Jul 2022, 10:41

Re: Nochmal eine Frage zu GIT

Beitrag von ArchChem »

Hallo,
fliegermichl hat geschrieben:
Fr 22. Mär 2024, 08:52
Ich hab einige Änderungen gemacht und diese auch commitet und per push auf den Server übertragen.
Nach einigen Tagen ist mir bewusst geworden, daß ich mehr verschlechtert als verbessert habe und hab per
git reset --hard <commitid> alles ab einem bestimmten commit in die Tonne geworfen.
solange es keinen dringenden Grund gibt, Dateien unwiderruflich löschen zu müssen (etwa aufgrund eines Datenlecks), braucht man in solchen Fällen keinen Hard-Reset durchzuführen. Es reicht, einfach zu dem entsprechenden Commit zurückzuspringen:

Code: Alles auswählen

git revert <Commit Hash>
Damit bleibt die gesamte Geschichte gespeichert, und man kann später auch darauf zurückgreifen.
Mathias hat geschrieben:
Fr 22. Mär 2024, 17:28
Wen man mal versehentlich eine Datei auf github rauf lädt, welche niemanden was angeht. Kann man diese einte Datei löschen, ohne das man einen knallharten "git reset --hard <commitid>" machen muss ?
Ja, auch das geht. Schau mal hier: https://stackoverflow.com/questions/351 ... ts-history

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Nochmal eine Frage zu GIT

Beitrag von fliegermichl »

Ja, da habe ich mir ein richtiges Ei gelegt.
Als ich mit git pull den aktuellen Stand auf einen anderen Rechner holen wollte, kamen Konflikte raus. Ich hab die dann dort korrigiert, comittet und wieder per push auf den Server geladen.

Dann habe ich diesen Stand per git pull auf meinen Entwicklungsrechner geholt und schon war der ganze Müll wieder da.
Wenn ich jetzt in die History schaue, laufen da mehrere Zweige nebeneinander her und ich weiss jetzt nicht, wie ich den Mist wieder rausbekomme.
githistory.png
githistory.png (12.23 KiB) 4997 mal betrachtet
Wenn ich mit git checkout <sha von dem rechten save changes> diesen Stand auschecke, dann ist für einen Moment die Welt wieder in Ordnung.

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Nochmal eine Frage zu GIT

Beitrag von Mathias »

Bei meinem GIT Account ist auch etwas faul, obwohl ich fas täglich was uploade,, ist bei der Aktivität (grüne Klötchen) praktisch nichts zu sehen.

Dann habe ich diesen Stand per git pull auf meinen Entwicklungsrechner geholt und schon war der ganze Müll wieder da.
Da würde ich unbedingt schauen, das du eine saubere Code-Sammlung auf dem PC hast. Und notfalls alles neu hochladen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Nochmal eine Frage zu GIT

Beitrag von fliegermichl »

Ich habe jetzt eine Lösung gefunden. War zwar etwas mit der Keule aber das Ergebnis funktioniert.

man kann auf dem Server (Da ist ein bare Repository) den Index mittels

Code: Alles auswählen

git update-ref refs/heads/master <sha_id>
auf einen bestimmten commit setzen. Das habe ich außer bei master für alle beteiligten Branches gemacht.
Dann lokal mit

Code: Alles auswählen

git reset --hard <sha_id>
auf denselben commit.
Ab da war der Mist verschwunden.
Beim nächsten mal verwende ich besser die git revert Methode

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Nochmal eine Frage zu GIT

Beitrag von fliegermichl »

Mathias hat geschrieben:
Sa 23. Mär 2024, 08:53
Bei meinem GIT Account ist auch etwas faul, obwohl ich fas täglich was uploade,, ist bei der Aktivität (grüne Klötchen) praktisch nichts zu sehen.
Dazu kann ich nichts sagen. Mein Remote Repository liegt auf einem eigenen Webserver und wird per git push/pull aktualisiert.
Das hat also mit github nichts zu tun.

Antworten