2015-07-29 16 views
6

So che questa domanda è stata fatta ma non riesco a sostituire completamente il mio ramo locale con il mio ramo remoto. Avevo installato un plug-in di terze parti nella mia filiale locale e ho problemi a rimuovere l'installazione; quindi, voglio "ricominciare" con la versione remota del ramo. Il ramo è chiamato "dev" localmente e "origin/dev" da remoto. Ho provato tre modi di sostituire la mia filiale locale con la versione remota:Git - Sostituire ramo locale con ramo remoto

1. git reset HEAD --hard 

2. git reset --hard origin/dev 

3. git checkout dev 
    git fetch 
    git reset --hard origin/dev 

Ma rivedendo il codice locale dopo le eseguire i comandi git di cui sopra, posso ancora vedere i file e le cartelle rimanenti dal plugin.

Utilizzando git status, ottengo "Your branch is up-to-date with 'origin/dev'. Nothing to commit, working directory clean".

Utilizzando git status --ignored, ottengo troppi file alla lista ... praticamente tutto nel mio file .gitignore credo.

Voglio solo il codice che esiste nel ramo dev remoto e nient'altro.

Qualcuno può aiutare?

Aggiornamento:

scopre che l'errore che mi è stato sempre stato a causa di un gruppo di file nella directory, root/var/cache/*. Il mio file .gitignore contiene le seguenti voci:

/var/* 
!/var/package 
var/session/* 

Cercando i possibili modi per ripristinare il ramo dev locale da remoto (elencati nella domanda di cui sopra, nonché le soluzioni proposte di seguito), la directory root/var/cache rimasto presente; Ho dovuto cancellarlo manualmente prima che la mia applicazione riprendesse a funzionare. Guardando il github, il ramo dev remoto non conteneva 'root/var/cache . Can anybody tell me why root/var/cache` non rispondeva ai comandi git per sostituire il ramo locale con la versione remota?

+1

appena cancellato tutto e reclone? – Mark

+0

I file dal plugin non sono tracciati da git, in modo che git non li tocchi affatto. Basta cancellarli a mano. – Hong

+0

Non volevo eliminare e recedere perché ho altri rami nel repository che ho bisogno di mantenere. Sono un nuovo idiota ma è difficile credere che non ci sia un modo semplice per farlo. Lezione appresa: non installare plug-in del fornitore che contengono 750 file che richiedono di "trascinare e rilasciare" i file nel codice. – Vee

risposta

4

Da un altro ramo (ad esempio master), reimpostare la filiale dev:

git branch -f dev origin/dev 

Poi, dev-out e ripulire i file aggiuntivi:

git checkout dev 
git clean -d -f 
+0

Grazie, @acanby, ma la directory che stava causando problemi non veniva rimossa; Ho dovuto rimuovere manualmente quella directory. Qualche idea sul perché i comandi git non stessero cancellando quella directory? Si prega di consultare la domanda aggiornata per i dettagli. – Vee

4

Prova git clean -fx. Ciò rimuoverà tutti i file non tracciati, anche se sono menzionati in .gitignore.

+1

ma prima di farlo ricorda di eseguire il backup di tutti i file necessari. A volte gli IDE mantengono le informazioni in ".hidden_directories" su come è configurato il tuo progetto. Ad esempio '.idea' in caso di PyCharm/Webstorm ecc. – noisy

+0

Grazie, Wouter - ho provato la soluzione ma c'era una directory (che mi causava problemi) che non era stata rimossa; ha aggiornato la domanda. Qualche idea su cosa stavo facendo male? – Vee

+0

Git non tiene traccia delle directory, solo dei file. Se un nome file ha un componente percorso che non esiste, allora git creerà le parti mancanti, ma altrimenti le ignorerà. È possibile aggiungere l'opzione -d per pulire anche le directory vuote. –