2013-01-12 6 views
15

Ich arbeite an einem Objective-C-Projekt in Xcode und muss eine frühere Version wiederherstellen, die in der Quellcodeverwaltung festgeschrieben wurde. Wie mache ich das? Ich kann Informationen zum Commit und Push finden, aber keine Informationen zum Wiederherstellen einer alten Version.Wiederherstellen der vorherigen Version des Codes in Xcode

+0

Welches Quellcodeverwaltungssystem welche Schnittstelle? – zaph

+1

Ich benutze Xcode's integrierte Git-Unterstützung. Ich schiebe gelegentlich nach Github, aber ich habe auch lokale Commits. Wenn das deine Frage nicht beantwortet hat, dann weil ich nicht genug darüber weiß, wie das funktioniert. –

+0

Ich benutze eine 3rd-Party-App: Tower für diese Zeiten finde ich Xcode Git Unterstützung fehlt. [Tower] (http://www.git-tower.com) - 30 Tage kostenlose Testversion. – zaph

Antwort

25

Sie können nicht das gesamte Projekt auf einmal in Xcode wiederherstellen, aber Sie können es vom Terminal aus tun; Einfach in den Ordner Ihres Projekts wechseln und git log eingeben, um den Hash zu finden, nach dem Sie suchen, und dann git checkout [Hash].

+0

Wo finde ich die wiederhergestellte Version? Sorry, ich lerne immer noch die Möglichkeiten von Git –

+1

@EthanFischer in Git, "Checkout" verschiebt Sie an einen anderen Ort in der Versionsgeschichte oder einen anderen Zweig. Sie arbeiten immer noch lokal und im selben Verzeichnis, wenn Sie "Kasse" verwenden. Sie erstellen keine neuen Kopien von Dateien oder ziehen nichts von einem Server. Dies kann verwirrend sein, zumal in Xcode (7.3) der Begriff "Checkout" im "Source Control" -Menü verwendet wird, um auf "Clone" zu verweisen, was tatsächlich Dateien herunterzieht, die auf einem Server existieren und platziert sie in einem lokalen Verzeichnis. –

+0

Hallo, habe das versucht und folgende Meldung erhalten: error: Deine lokalen Änderungen an den folgenden Dateien würden beim Checkout überschrieben: \t Drop-Down-Menü 3.5/DropDown-Menü Storyboard/DropDown-Menü Storyboard-Prefix.pch Bitte commit your ändert oder stash sie, bevor Sie Filialen wechseln können. Abbrechen – dancingbush

12

Zitat von der Dokumentation von Apple bei https://developer.apple.com/library/ios/documentation/ToolsLanguages/Conceptual/Xcode_Overview/Save_and_Revert_Changes_to_Files/ManageChanges.html

„Dateiversionen vergleichen Codezeilen Revert Ansicht> Version Editor> anzeigen Vergleichsansicht Wählen Sie Versionen von Dateien in einem Repository gespeichert zu vergleichen. Die Sprungstangen verwenden Datei zu wählen Versionen, die auf ihrer Position in einem Repository basieren. Jede Sprungleiste steuert die Auswahl für den darüber liegenden Inhaltsbereich. Um eine Version anzuzeigen, durchsuchen Sie die Hierarchie, um sie zu finden, und klicken Sie, um sie auszuwählen. Schattierte Bereiche zeigen Änderungen zwischen Versionen an. " "Sie können die Versionszeitleiste verwenden, um Dateiversionen basierend auf ihrer chronologischen Reihenfolge auszuwählen. Klicken Sie in der mittleren Spalte auf das Symbol für die Zeitachsenanzeige (../art/TimeLineIcon_2x.png), um die Zeitleiste zwischen den beiden Bearbeitungsbereichen anzuzeigen Wenn Sie die gewünschte Version finden, klicken Sie auf das linke oder rechte Indikatordreieck, um diese Version im entsprechenden Editorfenster anzuzeigen. Sie können die aktuelle Arbeitskopie der Datei in der Wenn Sie Änderungen zwischen Versionen rückgängig machen möchten, können Sie Code aus einer älteren Version kopieren und in die aktuelle Version einfügen. "

Die letzte Zeile zeigt den Schlüssel: Kopieren und Einfügen.

+0

Ich brauche das nicht mehr, aber da ich glaube, dass es meine Frage beantwortet, überprüfe ich es. Vielen Dank. –

+0

Vielen Dank für Ihre Antwort auf diese ansonsten kalte Spur. Ich habe mich selbst mit diesem Versionierungsproblem herumgeschlagen und fand Ihre Frage als das meiste zum Thema. -Xin – Hackless

+3

Wow. Apple sollte das auf jeden Fall intuitiver machen. Wenn Xcode Ihren Code irgendwo speichern kann, erwarten Sie, dass Sie ihn zurückbekommen, oder? Oder ist das nur ich? Tolle Arbeit Apple. Ich werde eine Feature-Anfrage einreichen. – erdekhayser

2

Wenn Sie ein gesamtes Projekt Extrakt nach engagierten Version auf einem separaten Ordner erhalten möchten, versuchen Sie dieses Shell-Skript:

#!/bin/sh 
# 
# restores an old version of xcodeproject from git repository 
# into folder $HOME/gitcopy 
# current directory must be the rootdir of the project 
# Xcode should not access the same project at this time 
# 
set -x 
PROJECT_ROOT=. 
COPY_DEST=$HOME/gitcopy 
if [ -e *.xcodeproj ] 
then 
    git log 
    echo "Which version ?" 
    read x 
    git checkout $x 
    git checkout -b copyVersion 
    cp -R $PROJECT_ROOT $COPY_DEST 
    git stash 
    git checkout master; 
else 
    echo "No xcode project root folder"; 
fi 
3

hier ist eine visuelle Methode in Xcode 8

enter image description here

+0

löscht alle Änderungen kill dein Projekt? – bearacuda13

+0

@ bearacuda13 Nein, es wird zum vorherigen Commit zurückgesetzt.Wenn das Ihr erstes Commit ist, dann wird es ja ein neues Projekt –

+0

Das verwirft einfach alle Änderungen, die Sie seit dem letzten Commit vorgenommen haben, und löscht sie für immer. Sie können nicht zu einem willkürlichen Commit in der Geschichte zurückspringen. – Andy

2

In Xcode 9 können Sie jede vorherige Version auschecken.

  1. Klicken Sie auf das Versionskontrollsymbol im Navigationsbereich auf der linken Seite oder gehen Sie zu Ansicht-> Navigatoren-> Quellcode-Navigator anzeigen.
  2. Eine Liste aller Commits für den ausgewählten Zweig wird angezeigt.
  3. Rechtsklick auf die gewünschte begehen und wählen Sie ‚Zur Kasse‚commitID‘‘

Sie können von dort auch direkt einen Zweig erstellen, die

noch nützlicher in einigen Fällen sein könnte
+0

Die obige Lösung funktioniert perfekt - nur Änderungen müssen zuerst gespeichert/gelöscht werden Dank Andy –

0

ich auf Xcode arbeite 9.2 Projekt, das mehrere Abhängigkeiten und zusätzliche Dateien enthält, die darin enthalten sind. Im Laufe der Reinigung habe ich versehentlich das Projekt zerstört und konnte nicht herausfinden, was zu tun ist, bis es gelaufen ist, bis ich diese Lösung gefunden habe. Ich ging in der oberen Menüleiste zur Quellcodeverwaltung und verworfen alle Änderungen zuerst. Dann ging ich zum Source Control Manager (der zweite von links, direkt neben dem Project Navigator, hob die gewünschte Commit auf, klickte dann mit der rechten Maustaste und wählte die Checkout-Option, die bereits die Nummer des gewünschten Commits eingegeben hatte und perfekt funktionierte . Schritt 1 - Alle Änderungen verwerfen Schritt 2 - Wählen Sie Commit, zu dem Sie zurückkehren möchten. Schritt 3 - Klicken Sie mit der rechten Maustaste und wählen Sie Checkout

Verwandte Themen