2013-03-20 13 views
76

Il titolo dice tutto. Sto cercando di aggiungere i miei pacchetti NuGet al repository. Tutto tranne i file .dll vengono rilevati.repository git che ignora tutti i file .dlls

Il file gitignore non contiene riferimenti a * .dll. I file .dll non vengono riconosciuti quando si trovano in qualsiasi parte dell'intero repository. info/exclude è anche vuoto.

Ho anche clonato il repository (file system in file system anziché da remoto a file-sysytem) senza fortuna. Questo problema si verifica anche su due computer diversi.

Potrei aggiungere manualmente i file .dll, ma dovrebbero essere rintracciati. Perché non vengono monitorati?

+21

Cosa significa 'git config --get core.excludesfile' dire –

+1

.? Inoltre non è generalmente ag ood idea di usare git per rintracciare i file binari dato che git non può calcolare in modo efficiente i delta tra le revisioni, quindi mantenere tutte le versioni sarà uno spreco se lo spazio. Se le DLL vengono generate al volo, è meglio ignorarle semplicemente in git. In caso contrario, è preferibile utilizzare un altro meccanismo di sincronizzazione (ad esempio rsync). –

+0

Questi sono pacchetti NuGet che sto cercando di aggiungere a git. Non sto utilizzando la funzionalità "Package Restore" di NuGet, quindi ho bisogno di controllare l'intera cartella dei pacchetti. –

risposta

107

Avete o ~/.gitignore_global o ~/.gitignore nella vostra home directory che potrebbe anche elencare questi modelli di file?

Vedi https://help.github.com/articles/ignoring-files

+5

Dato che sta lavorando con i file dll, è sulla piattaforma Windows, quindi ~ significa $ HOMEDRIVE $ HOMEPATH sotto Windows 7 –

+8

Questo risultato essere il problema Non ho tuttavia aggiunto questo file di ignoranza globale. Qualche ragione per cui sarebbe saltata fuori dal nulla? Ora che ci penso, ho recentemente installato SourceTree (da Atlassian). Forse è il colpevole? –

+6

Ho avuto lo stesso problema, ho anche installato SourceTree in precedenza. Quindi immagino sia ragionevole supporre che SourceTree abbia aggiunto il file di ignoranza globale dal momento che funzionava in passato. –

8

potrei aggiungere i file DLL manualmente, ma essi devono essere monitorati. Perché non vengono monitorati?

No, non dovrebbe essere monitorati, se non li hai aggiunto. Vengono tracciati solo i file che sono già stati aggiunti e impegnati; questo è ciò che significa "tracciato".

Prova ad aggiungere manualmente uno di loro tramite git add e sarà dirà il motivo per cui li sta ignorando, e chiederà di utilizzare git add -f per aggiungere il file in ogni modo.

+0

Ho fatto un "git add"/packages "" e non ha rilevato i file .dlls. Ho quindi usato -f e lo ha aggiunto. Ho trovato il problema però. "* .dll" era nella mia ignoranza globale. Nessun indizio da dove questa ignoranza globale è venuta. –

2

È necessario indicare esplicitamente a git di tenere traccia di tutti i nuovi file.

  1. Eseguire git add filename per aggiungere il file all'indice di git.

  2. Eseguire git commit per confermare le modifiche nel proprio indice.

git status dovrebbe anche mostrare l'elenco di file e directory non tracciati.

Se si desidera elencare tutti i file nel repository, che vengono ignorati da gitignore, è possibile eseguire:

git ls-files . --ignored --exclude-standard --others 

Se si desidera elencare tutti i file non monitorate nella repo:

git ls-files . --exclude-standard --others 
+1

Ho dovuto "git add -f" per tracciare i file che sono stati infatti ignorati.Si è rivelato essere una voce nel file di ignoranza globale, che alcune applicazioni hanno messo lì per mia inconsapevolmente. –

1

Nel mio caso, non c'erano riferimenti .dll nel file .gitignore e non avevo file globali. Tuttavia, nella sottodirectory .git, ho trovato un file chiamato ms-persist.xml. Ho chiuso tutte le istanze di Visual Studio e poi aggiunto manualmente i miei file .dll mancanti a quel file. Quando ho riaperto lo studio visivo, i file .dll venivano visualizzati come bisognosi di essere registrati. Li ho controllati e ora sono d'oro ...

76

Se si utilizza SourceTree e l'impostazione predefinita ignorerà tutte le DLL per impostazione predefinita ... Strumenti => Opzioni => Git quindi "Modifica file" ... aggiungere un "#" prima di .dll => "# .dll" ... salvare e chiudere.

Quindi per Windows Explorer nella cartella dei pacchetti aprire un terminale GitBash e digitare "git add". e lascia che funzioni, torna in SourceTree attendere un secondo e tutte quelle DLL del pacchetto mancanti verranno visualizzate per il tuo commit e push.

+9

Risposta corretta per gli utenti di SourceTree;) – jmpcm

+0

Sapeva di un elenco di ignorazioni globali, non riusciva a trovarlo nella GUI .. Grazie! – Christoph

+0

Strumenti => Opzioni => Git/Mercurial Elenco Ignora globale ... Se non ne hai uno puoi crearlo e puntarlo lì. – KevinB

0

Si dispone di un numero globale .gitignore da qualche parte o più .gitignore file in sottodirectory - relative alla radice del progetto.

su sistemi Linux e MacOS globale git-ignorare è più probabile nella vostra Home ~/

~/.gitignore_global

Su Windows è probabile nella vostra directory utente. O il vostro utente locale (che si può scoprire digitando ECHO %USERPROFILE% o whoami alla riga di comando.

Se non c'è, allora sicuramente un .gitconfig è invece presente. Guardate qui per la posizione del gitignore (ad esempio, la cartella dell'utente Documents)

Edit:. Usa git config --list --show-origin per ottenere i dettagli dei contribuenti git-impostazioni e le loro posizioni di file corrispondenti

Problemi correlati