Frage

Ich hatte an etwas arbeiten, und beschlossen, es vollständig aufgeschraubt wurde ... nach etwas davon begangen zu haben. Also habe ich versucht, die folgende Sequenz:

git reset --hard
git rebase origin
git fetch
git pull
git checkout

an welcher Stelle ich bekam die Nachricht

Your branch is ahead of 'origin/master' by 2 commits.

Ich möchte, dass meine lokalen Commits verwerfen , ohne dass mein lokales Verzeichnis und alles wiederholten-auszulöschen. Wie kann ich das erreichen?

War es hilfreich?

Lösung

git reset --hard origin/master

werden alle Commits nicht in origin/master entfernen, wo origin der Name Repo ist und master ist der Name der Branche.

Andere Tipps

Als Nebenwirkung, abgesehen von der Antwort von mipadi (die übrigens funktionieren sollte), dann sollten Sie wissen, dass zu tun:

git branch -D master
git checkout master

auch genau das tut, was Sie ohne having to redownload everything wollen (Ihr Zitat umschrieben). Das ist, weil Ihr lokales Repo eine Kopie der Remote-Repo enthält (und diese Kopie ist nicht das gleiche wie Ihr lokales Verzeichnis, es nicht einmal das gleiche wie Ihr ausgecheckt Zweig ist).

einen Zweig aus Abwischen ist vollkommen sicher und diesen Zweig zu rekonstruieren ist sehr schnell und beinhaltet keinen Netzwerkverkehr. Denken Sie daran, git ist in erster Linie eine lokale Repo durch Design. Auch entfernte Zweige haben eine Kopie auf dem lokalen. Es gibt nur ein bisschen von Metadaten, die git sagt, dass eine bestimmte lokale Kopie ist eigentlich ein Remote-Zweig. In git, alle Dateien auf der Festplatte die ganze Zeit.

Wenn Sie haben noch keine Zweige außer Master, sollten Sie:

git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp

Was ich tue, ist ich versuche schwer zu HEAD zurücksetzen. Dies wird auszulöschen alle lokalen Commits:

git reset --hard HEAD^

Sie müssen laufen

git fetch

Um alle Änderungen zu erhalten und dann werden Sie nicht erhalten eine Nachricht mit „Ihrer Branche voraus ist“.

Ich habe Fälle gesehen, wo die Fern synchron wurde und Bedarf aktualisiert werden. Wenn ein reset --hard oder ein branch -D zu arbeiten scheitern, versuchen

git pull origin
git reset --hard 

hatte ich eine tun:

git checkout -b master

als git sagte, dass es nicht existiert, weil es mit dem

wischen gewesen
git -D master
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top