Ich weiß, dass, wenn ich will eine lokale Repo mit Dateien von einem Remote-Repo gewaltsam zu überschreiben, kann ich dies tun:Wie kann ich einen lokalen Repo zwangsweise mit Änderungen aus einem Remote-Repo überschreiben, während der Verlauf beibehalten wird?
git fetch --all
git reset --hard origin/master
Das Problem dabei ist, dass wenn ich auf der Geschichte des lokalen Repo aussehen Es hat die Geschichte komplett ausgelöscht und durch eine Kopie der Geschichte des Remote Repo ersetzt.
Gibt es eine Möglichkeit, dass ich diese zwangsweise überschreiben kann, während ich die Geschichte behalte?
Zum Beispiel, wenn ich eine Datei im lokalen Repo mit folgendem Inhalt:
- ContentA
- ContentB
- ContentC
Und ich habe die gleiche Datei in der Remote-Repo mit folgendem Inhalt:
- ContentA
- ContentC
- ContentD
nach dem Zug von der Remote-Repo, möchte ich die Geschichte dieser für die Datei anzuzeigen:
Version #1
- ContentA
- ContentB
- ContentC
Version #2
- ContentA
- ContentC
- ContentD
I don‘ t will, dass es dies zeigen (von einem gewaltsamen Überschreiben):
Version #1
- ContentA
- ContentC
- ContentD
auch nicht, ich will es, dies zeigen (von merge):
Version #1
- ContentA
- ContentB
- ContentC
Version #2
- ContentA
- ContentB
- ContentC
- ContentD
Ist das möglich?
Sie könnten Ihren eigenen benutzerdefinierten Git-Merge-Treiber definieren. – DavidN
Auch Ihre Zurücksetzung - hart zum Ursprung/Meister bewegt Ihren lokalen Meister zu dieser Verpflichtung, also würde ich denken, dass Sie gerade dort Ihre Arbeit verloren haben. Klingt so, als ob Sie zusammenführen möchten, aber auf eine besondere Art und Weise. Ich frage mich nur, ob du Git nicht so verwendest, wie alle anderen auch, weil du beide Versionen leicht mit Git sehen kannst. Normalerweise wollen die Leute die Dateien nicht verketten, wenn sie sie zusammenbringen. Sie wollen sie zusammenführen. – DavidN
Sie könnten die Fernbedienung auf die lokale rebase, oder Sie könnten remote in einen separaten Zweig ziehen und dann --soft, stash und pop, oder Cherry einzelnen Commits von der Fernbedienung auswählen. –