2014-11-23 45 views
5

Próbuję przywrócić plik zmodyfikowany lokalnie do wersji najnowszej, skutecznie cofając moje zmiany.Jak przesłonić niezmontowanego git checkout z wersją upstream

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

Korzystanie -f zmienia błąd ostrzec, ale nadal nie dokona zmiany (???)

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

sam plik wygląda tak:

$ 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> 

Jak mogę przesłonić lokalne pliki i zastosować zmiany?

+0

Możliwy duplikat [Git: nie można cofnąć zmian lokalnych (błąd: ścieżka ... jest odłączona)] (http://stackoverflow.com/questions/3021161/git-cant-undo-local-changes-error-path-is-unmerged) – Stewart

Odpowiedz

15

może być konieczne, aby przywrócić plik najpierw, przed wykonaniem kasę:

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

Reset un-stopniowe zmiany w toku (tutaj Merge, ze znacznikami konfliktu w pliku).
Następnie kasy może przywrócić indeks z ostatnią zawartością zatwierdzenia.

4

Jeśli trzeba zrobić dla wszystkich zarówno zmodyfikowanego niezłączonych plików, istnieje prosty sposób zrobić, że zamiast robić dla każdego z nich:

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

Jeśli trzeba zrobić dla wszystkich [dodane/usunięte] przez nas niezłączonych plików, istnieje prosty sposób zrobić, że zamiast robić dla każdego z nich:

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

Jeśli trzeba zrobić dla wszystkich [dodane/usunięte] przez nich niezłączonych plików, istnieje prosty sposób zrobić, że zamiast robić dla każdego z nich:

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