2014-11-23 5 views
5

Ich versuche, eine lokal geänderte Datei auf die neueste Upstream-Version zurückzusetzen, wodurch meine Änderungen effektiv rückgängig gemacht werden.So überschreiben Sie das nicht zusammengeführte Git-Checkout mit der Upstream-Version

$ git checkout -- Jovie/Jovie-Info.plist 
error: path ‘Jovie/Jovie-Info.plist' is unmerged 

Mit -f den Fehler Abspaltungen zu warnen, aber immer noch nicht die Änderung vornehmen (???)

$ git checkout -f -- Jovie/Jovie-Info.plist 
warning: path ‘Jovie/Jovie-Info.plist' is unmerged 

Die Datei selbst sieht wie folgt aus:

$ git diff Jovie/Jovie-Info.plist 
diff --cc Jovie/Jovie-Info.plist 
index 6c576d9,0209baa..0000000 
--- a/Jovie/Jovie-Info.plist 
+++ b/Jovie/Jovie-Info.plist 
@@@ -50,7 -50,7 +50,11 @@@ 
       </dict> 
     </array> 
     <key>CFBundleVersion</key> 
++<<<<<<< Updated upstream 
+  <string>5922</string> 
++======= 
+  <string>5918</string> 
++>>>>>>> Stashed changes 
     <key>Fabric</key> 
     <dict> 
       <key>APIKey</key> 

Wie kann ich die lokalen Dateien überschreiben und Upstream-Änderungen anwenden?

+0

Mögliche Duplikat [Git: lokale Änderungen können nicht rückgängig gemacht werden (Fehler: Pfad ... ist nicht eingebunden)] (http://stackoverflow.com/questions/3021161/git-cant-undo-local-changes-error-path-is-unmerged) – Stewart

Antwort

15

Möglicherweise müssen Sie die Datei zuerst zurückgesetzt werden, bevor die Kasse zu tun:

git reset -- Jovie/Jovie-Info.plist 
git checkout -- Jovie/Jovie-Info.plist 

Die Reset-un-Stufe die Veränderungen im Gang (hier die Zusammenführung mit den Konfliktmarken in der Datei).
Dann kann der Checkout den Index mit dem letzten Commit-Inhalt wiederherstellen.

4

Wenn Sie für alle beide modifizierte unmerged Dateien tun müssen, ist es eine einfache Möglichkeit, dass für jeden zu tun, man stattdessen zu tun:

git reset $(git status | grep both | awk '{print $4}') 
git checkout $(git status | grep modified | awk '{print $3}') 

Wenn Sie alle tun müssen [hinzugefügt/gelöscht] von uns unmerged Dateien, ist es eine einfache Möglichkeit, dass zu tun, statt der für jeden tun:

git reset $(git status | grep us | awk '{print $5}') 
git checkout $(git status | grep modified | awk '{print $3}') 

Wenn Sie für alle tun [hinzugefügt/gelöscht], indem sie unmerged Dateien gibt es eine einfache Art und Weise, dass statt für jeden zu tun zu tun ist:

git reset $(git status | grep them | awk '{print $5}') 
git checkout $(git status | grep modified | awk '{print $3}') 
Verwandte Themen