2012-03-20 17 views
18

mi sembra di aver ballsed il mio git repo tracciando un file, poi ignorarlo e poi eliminarlo. Il fatto è che voglio che il file sia presente in un repository remoto (il sito live), ma non voglio tracciare.git pista, ignorare, eliminare, untrack

Ora il mio ramo principale sta cercando di rimuovere tutti i file dal repository, che so li eliminerà sul ramo remoto quando applico i cambiamenti ... Voglio solo srotolarli, ma non posso farlo come loro ' già cancellato su master e git rm -r --cached dice 'non ha trovato nessun file'.

come posso untrack questi file eliminati senza rimuoverli dal repository remoto?

risposta

30

Devi solo non si vuole tenere traccia di un file, ma si desidera conservare il file nel repository remoto (non nudo).

Utilizzare questo comando git. Dopo aver fatto questo, git smette di controllare il file per eventuali modifiche.

git update-index --assume-unchanged <filename> 

In qualsiasi momento, è possibile tenere traccia di nuovo impostando --no-assumere-unchaged bandiera

git update-index --no-assume-unchanged <filename> 

Questi comando non influiscono sul repository remoto.

Per maggiori informazioni: http://kar-git.blogspot.in/2012/11/how-to-set-git-to-ignore-few-files-like.html

+1

Hei funziona. Puoi spiegare come è diverso dall'aggiunta a git ignore –

+1

@ Ajith: GIT non ignorerà un file che è già stato tracciato. Guarda il link fornito nella risposta per informazioni dettagliate. –

4

git rm viene utilizzato per eliminare i file dal repository.

Per interrompere il rilevamento, è possibile, dopo averlo eliminato, aggiungerli al file .gitignore nella directory principale del repository.

+3

non credo che si può fermare il monitoraggio di un file che è già monitorata da gitignoring esso. Qualcuno può confermare? –

+0

Confermato. ! min limite di carico! – heinrich5991

+0

Ma la rimozione del file non smette di rintracciarlo, giusto? –

0

Anche se si dispone di un file non monitorate con git rm, è ancora possibile checkout una versione precedente del file, per esempio

Nel vostro repo locale: git rm foo git commit -m 'foo rimosso' git push origine maestro

Nella repository remoto:

git pull origin master // foo will be removed 
git checkout abcd1234 -- foo // checkout foo from commit abcd1234 (foo is staged) 
git reset HEAD // unstage foo 
git status 

# On branch master 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  foo 

Poi aggiungi a .gitignore a untrack