Frage

Soweit ich sehe, git pull someRemote master versucht, den abgelegenen Zweig in meine zu verschmelzen.

Gibt es eine Möglichkeit, "meine Sachen völlig wegzuwerfen, machen Sie mich einfach zu einem anderen Klon der Fernbedienung" mit Git Pull? Ich möchte immer noch mein eigenes Repository behalten und seine Geschichte behalten, aber ich möchte nach diesem Befehl eine 1: 1 -Kopie von Someremote's Master Branch haben.

Stellen Sie sich vor, es gibt 2 Repositories, RM und My. Zahlen sind Commits, und dies setzt nur einen Zweig (Master) voraus.

RM1 --- RM2 --- RM3 --- RM4 --- RM5 --- RM6 ...
|                        |
+-> MY1 --- MY2 --- MY3 -+-> MY4 --- MY5 --- MY6 ...

Also starte ich mein eigenes Repository als Klon von RM1. Dann entwickle ich mich glücklich und RM entwickelt sich glücklich, aber wir teilen unsere Arbeit nie. Nach My3 merke ich, dass mein Zweig nicht so toll ist, aber dass RM4 ziemlich gut ist. Also möchte ich git pull RM4 in meine. Ich möchte jedoch nicht, dass meine Änderungen in My1-3 bestehen bleiben, ich möchte, dass mein 4 1: 1-Kopie von RM4 sein.

Ich möchte jedoch meine Geschichte behalten, im Idealfall möchte ich eine Änderung zwischen MY3 und RM4 oder zwischen MY3 und RM2-4.

Es sollte immer noch mein Repository bleiben.

Ist das möglich?

(Dies gilt für Github-Projekte, bei denen ich ein Projekt ausgehe, ein wenig experimentieren, es für ein paar Wochen in Ruhe lassen, aber es dann aktualisieren möchte, ohne meine Änderungen vorzunehmen. Im Moment lösche ich meine Gabel und meine Neugewinne, was ist. t der beste Ansatz.)

War es hilfreich?

Lösung

Benennen Sie zuerst Ihre Master -Zweigstelle in etwas anderes um:

git branch -m master my_old_master

Erstellen Sie dann einen neuen Master:

git checkout -b master someRemote

Das Tolle an Gits Zweignamen ist, dass sie selbst keine tatsächlichen Orte selbst sind, sondern nur Hinweise auf Orte (wo ein "Ort" eine SHA1 -Commit -ID ist).

Andere Tipps

Klingt so, als wären Sie nach Git -Checkout, was Ihre lokalen Änderungen auf einen Pfad verurteilt.

Sie können Ihre Änderungen mit dem Checkout zurücksetzen:

git checkout myfile.h

Wird myfile.h aus dem Index wiederherstellen

http://git-scm.com/docs/git-checkout

Wenn Sie Ihren aktuellen Master -Zweig beibehalten möchten, aber eine neue Version registrieren möchten (Spiegelung der Remote -Filiale), können Sie;

  • Registrieren Sie einen Merge -Filter -Treiber (nur für diese Zusammenführung: a keepTheir eines)
  • mach a git pull --no-commit
  • Überprüfen Sie, ob es keine zusätzlichen Dateien gibt, die entfernt werden müssen (Dateien in Ihrem Master, die in der Remote -Zweigstelle nicht vorhanden waren)
  • verpflichten
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top