2014-11-23 28 views
5

Sto tentando di ripristinare un file modificato localmente alla versione più recente a monte, annullando in modo efficace le mie modifiche.Come ignorare il checkout git non completo con la versione upstream

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

Utilizzando -f altera l'errore di mettere in guardia, ma ancora non farà il cambiamento (???)

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

Il file stesso aspetto:

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

Come sovrascrivere i file locali e applicare le modifiche upstream?

+0

Possibile duplicato di [Git: impossibile annullare le modifiche locali (errore: percorso ... non è stato risolto)] (http://stackoverflow.com/questions/3021161/git-cant-undo-local-changes-error-path-is-unmerged) – Stewart

risposta

15

Potrebbe essere necessario reimpostare il file prima, prima di fare cassa:

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

Il reset non-fase i cambiamenti in atto (qui l'unione, con i marcatori di conflitto nel file).
Quindi il checkout può ripristinare l'indice con l'ultimo contenuto di commit.

4

Se avete bisogno di fare per tutti sia modificato file non uniti, c'è un modo semplice per farlo che invece di fare per ciascuno di essi:

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

Se avete bisogno di fare per tutti [aggiunto/cancellato] da noi file non uniti, c'è un modo semplice per farlo che invece di fare per ciascuno di essi:

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

Se avete bisogno di fare per tutti [aggiunto/cancellato] da loro file non uniti, c'è un modo semplice per farlo invece di fare per ciascuno di essi:

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