2012-12-20 9 views
9

Sto usando git-svn e sto cercando di eseguire git svn rebase.Come faccio a eseguire il debug di git error: "Le modifiche locali ai seguenti file verrebbero sovrascritte dal checkout" quando non c'è nulla da mettere da parte?

ottengo l'errore:

Your local changes to the following files would be overwritten by checkout: 
<filename> 
Please, commit your changes or stash them before you can switch branches. 

ho già corro git update-index --assume-unchanged <filename>, e ha apportato modifiche al file, ma ora ho eseguito git update-index --no-assume-unchanged <filename> per sbarazzarsi di questo.

git status non segnala alcuna modifica e git stash dice che non c'è niente da conservare.

Ho verificato che il file non è in .gitignore o .git/info/exclude

Come posso eseguire il debug di questo problema ulteriormente?

risposta

10

Si scopre che ho avuto il set skip-worktree po ', quindi ho bisogno di correre

git update-index --no-skip-worktree <filename> 

Ho trovato questo eseguendo

git ls-files -v | grep "^[^H]" 

(O git ls-files -v | where { $_ -match "^[^H]"} con Windows PowerShell)

Digitando git help ls-files ha spiegato cosa significava l'output.

12

Avevo questo problema e la risposta di Tim mi ha aiutato a capire la soluzione.

In passato avevo corso:

git update-index --assume-unchanged index.php 

Il problema

Dopo aver effettuato una serie di modifiche ad un altro ramo a distanza, mi è stato sempre l'avvertimento di sovrascrittura durante il tentativo di passare a livello locale.

git checkout other-branch 

error: Your local changes to the following files would be overwritten by checkout: 
index.php 
Please, commit your changes or stash them before you can switch branches. 
Aborting 

L'archiviazione non funzionava.

git stash save --keep-index 
No local changes to save 

La soluzione

git update-index --no-assume-unchanged index.php 
git add index.php 
git commit 

Dopo di che.

git checkout other-branch 

Successo!

+0

Grazie per il tuo post. Nel mio caso è successo qualcosa di simile in cui ho modificato il file, quindi ho fatto l'aggiornamento git --assume-immutato che ha provocato questo errore. Ho dovuto seguire la tua soluzione eseguendo il --no-assume-invariato, commit, e poi in seguito --assume-immutato. Spingi solo dopo –

+0

Se usi 'git commit', tutte le modifiche locali in index.php andranno in remoto, e tutti, chi estrarrà il progetto, otterranno i tuoi cambiamenti, non è vero? git propone 2 modi in questo caso di errore: commit o stash. Quindi, preferisco usare 'git stash' dopo' git update-index --no-assume-invariato '. –

Problemi correlati