Git erzwingt die vollständige Synchronisierung mit dem Master

Lesezeit: 2 Minuten

Mein Arbeitsplatz verwendet Subversion für die Quellcodeverwaltung, also habe ich mit git-svn herumgespielt, um die Vorteile meiner eigenen Branches zu nutzen, so oft zu committen, wie ich möchte, ohne das Hauptrepo zu berühren usw.

Da mein Git-SVN-Checkout lokal ist, habe ich es auch auf eine Netzwerkfreigabe geklont, um als Backup zu fungieren. Ich denke, wenn mein Desktop einen Speicherauszug erstellt, habe ich zumindest das Repo auf der Netzwerkfreigabe, um Änderungen zu erhalten, die ich noch nicht übertragen konnte.

Mein Arbeitsablauf besteht darin, vom Desktop aus zu arbeiten, Änderungen vorzunehmen, zu übertragen usw. Am Ende des Tages möchte ich das Repo auf der Netzwerkfreigabe mit all meinen aktuellen Änderungen aktualisieren. Ich hatte das Repo auf der Netzwerkfreigabe mit eingerichtet git clone repo_on_my_desktop und aktualisieren Sie dann das Repo auf der Netzwerkfreigabe mit git pull origin master. Das Problem, auf das ich stoße, ist, wenn ich früher a git rebase um mehrere Commits zu quetschen, bevor ein dcommit in das Haupt-SVN-Repository ausgeführt wird. Wenn ich dies tue, bekomme ich Merge-Konflikte auf dem Repo auf der Netzwerkfreigabe, wenn ich versuche, nachts zu sichern.

Gibt es eine Möglichkeit, einfach vollständig mit dem Repository auf meinem Desktop zu synchronisieren, ohne eine neue Datei zu erstellen git clone jede Nacht?

hasens Benutzeravatar
Hasen

Sie sollten keine Rebase durchführen, wenn Sie beabsichtigen, aus einem anderen Repo zu ziehen.

Wenn es Ihnen nichts ausmacht, Änderungen an Ihrer Netzwerkfreigabe zu überschreiben, können Sie Folgendes tun:

git fetch origin master
git reset --hard origin/master

Dadurch wird der lokale Master auf den ursprünglichen Master zurückgesetzt.

Warnung: das ist ein schwer zurücksetzen, gehen alle Ihre Änderungen verloren (festgeschrieben* oder nicht).

Aber ich gehe davon aus, dass Sie dort keine wirklichen Änderungen haben und es meistens nur ein Backup ist.

* Hinweis: Technisch gesehen gehen festgeschriebene Änderungen nicht verloren, bis sie vom Reflog ablaufen, aber sie sind praktisch verloren.

  • Nein, die überflüssigen Dateien werden nicht entfernt.

    – felixh

    2. Februar 2018 um 8:15 Uhr

  • Wenn Sie irgendwelche Änderungen haben und diese gerne verlieren, brauchen Sie sie auch git clean -f -d. Dies sollte eine vollständige Synchronisierung gewährleisten.

    – Klage

    31. Dezember 2019 um 14:21 Uhr

Benutzeravatar von VonC
VonC

Zwei Kommentare:

1/ Ich würde empfehlen, entweder ein reines Repo oder ein Bundle (eine Datei, einfacher zu verschieben) für Ihre Netzwerkfreigabe zu haben

2/ Ich würde lieber network_repo als Remote zu Ihrem Desktop-Repo hinzufügen und von dort pushen (git push --force network_repo master): Sie bleiben in Ihrem Arbeitsrepo.

1429560cookie-checkGit erzwingt die vollständige Synchronisierung mit dem Master

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy