repository git ignorando tutti i file .dll


88

Il titolo dice tutto. Sto provando ad aggiungere i miei pacchetti NuGet al repository. Viene rilevato tutto tranne i file .dll.

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

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

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


26
Cosa git config --get core.excludesfiledice?
Antony Hatchkins

2
Inoltre, in genere non è una buona idea usare git per tenere traccia dei file binari poiché git non può calcolare in modo efficiente i delta tra le revisioni, quindi mantenere tutte le versioni sarà uno spreco di spazio. Se le DLL vengono generate al volo, è meglio ignorarle in git. In caso contrario, è meglio utilizzare un altro meccanismo di sincronizzazione (ad esempio rsync).
Antony Hatchkins

Questi sono pacchetti NuGet che sto cercando di aggiungere a git. Non sto utilizzando la funzionalità "Ripristino pacchetto" di NuGet, quindi ho bisogno di archiviare l'intera cartella dei pacchetti.
Paul Knopf

Risposte:


121

Hai ~/.gitignore_globalo ~/.gitignorenella tua home directory che potrebbe anche elencare questi modelli di file?

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


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

9
Questo si è rivelato essere il problema. Tuttavia, non ho aggiunto questo file di ignoranza globale. Qualche motivo per cui sarebbe saltato fuori dal nulla? Ora che ci penso, ho recentemente installato SourceTree (da Atlassian). Forse è il colpevole?
Paul Knopf

6
Ho avuto lo stesso problema, ho anche installato SourceTree prima di quello. Quindi immagino che sia ragionevole supporre che SourceTree abbia aggiunto il file ignore globale poiché funzionava in passato.
Andreas Krebs

8
Modifica: OK, è aggiunto dal link
Andreas Krebs

31
Ho dovuto correre git check-ignoreper scoprire dove fosse il file. Piacere a ~ / Documents / gitignore_global.txt
Matt Canty

98

Se usi SourceTree e l'impostazione predefinita, ignorerà tutte le DLL per impostazione predefinita ... Strumenti => Opzioni => Git quindi "Modifica file" ... aggiungi un "#" prima di .dll => "# .dll" .. . salva e chiudi.

Quindi per Windows Explorer nella cartella dei pacchetti apri un terminale GitBash e digita "git add". e lascia che funzioni, torna in SourceTree aspetta un secondo e tutte quelle DLL dei pacchetti mancanti verranno visualizzate per consentirti di eseguire il commit e il push.


13
Risposta corretta per gli utenti di SourceTree;)
jmpcm

Conoscevo un elenco di elementi da ignorare globale, non sono riuscito a trovarlo nella GUI .. Grazie!
Christoph

Strumenti => Opzioni => Git / Mercurial Global Ignore List ... Se non ne hai uno puoi crearlo e puntare lì.
KevinB

2
Posizione del file: ~ / Documents / gitignore_global.txt
James McCormack

Questo ha funzionato per l'albero dei sorgenti, ma come per lo studio visivo le ignorazioni non erano nel mio gitignore. Qualsiasi albero dei sorgenti ho usato per questa attività
Demodave

11

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

No, non dovrebbero essere monitorati, a meno che tu non li abbia aggiunti. Vengono tracciati solo i file già aggiunti e sottoposti a commit; questo è ciò che significa "tracciato".

Prova ad aggiungerne manualmente uno tramite git adde ti dirà perché li sta ignorando e ti chiederà di usare comunque git add -fper aggiungere il file.


Ho eseguito un "git add '/ packages'" e non ha rilevato i file .dll. Ho quindi usato -f e l'ho aggiunto. Ho trovato il problema però. "* .dll" era nel mio ignore globale. Nessun indizio da dove provenga questa ignoranza globale.
Paul Knopf

2

Devi dire esplicitamente a git di tenere traccia dei nuovi file.

  1. Esegui git add filenameper aggiungere il file all'indice di git.

  2. Corri git commitper eseguire il commit delle modifiche nel tuo index.

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

Se vuoi elencare tutti i file nel repository che vengono ignorati da gitignore, puoi eseguire:

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

Se vuoi elencare tutti i file non tracciati nel repository:

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

2
Ho dovuto "git add -f" per tenere traccia dei file che sono stati effettivamente ignorati. Si è rivelata una voce nel file ignora globale, che alcune applicazioni hanno messo lì per mio inconsapevolmente.
Paul Knopf

2

Ho affrontato un problema simile. Non riesco ad aggiungere il file .dll dalla directory del pacchetto al mio git, quindi ho trovato il file gitignore_global.txt poiché sourcetree ha aggiunto automaticamente questo file come impostazione globale di git ignore. Ho rimosso * .dll dal file gitignore_global.txt e per me funziona bene.

Posizione del file gitignore_global.txt come di seguito

C: \ Users \ XXXX \ Documents \ gitignore_global.txt oppure puoi trovarlo da sourcetree TOOL => OPTION => scheda GIT e scoprire l'elenco globale ignorato


1

Nel mio caso, non c'erano riferimenti .dll nel file .gitignore e non avevo un file globale. Tuttavia, nella sottodirectory .git, ho trovato un file chiamato ms-persist.xml. Ho chiuso tutte le istanze di Visual Studio, quindi ho aggiunto manualmente i miei file .dll mancanti a quel file. Quando ho riaperto Visual Studio, i file .dll sembravano dover essere archiviati. Li ho registrati e ora sono a posto ...


0

Hai un globale .gitignoreda qualche parte o oltre.gitignore file nelle sottodirectory - relativi alla radice del tuo progetto.

Su sistemi Linux e MacOS è molto probabile che git-ignore globale sia nella tua Home ~/

~/.gitignore_global

Su Windows è probabile che si trovi nella directory utente. O il tuo utente locale (che puoi scoprire digitando ECHO %USERPROFILE%o whoamidalla riga di comando.

Se non c'è, allora sicuramente .gitconfigè presente invece. Cerca qui la posizione del gitignore (ad esempio la Documentscartella dell'utente).

Modifica : utilizzare git config --list --show-originper ottenere i dettagli delle impostazioni git che contribuiscono e le posizioni dei file corrispondenti.


0

So che questa domanda è molto vecchia, ma sto aggiungendo per altri che potrebbero visitare questa domanda in futuro. Puoi modificare il tuo file ignora globale come le risposte sopra menzionate, ma ciò influenzerà TUTTI i tuoi repository git. Se, invece, desideri un approccio più granulare, puoi semplicemente escludere DLL specifiche o cartelle specifiche nel tuo progetto .gitignores individuale. Questo sovrascrive tutte le impostazioni ignora e forza il rilevamento e la gestione dei file da parte di git. Penso che questo sia un approccio migliore.

.gitignore (per il tuo progetto particolare)

# Custom ignores
!*.dll
# or
!My.specific.dll

# rest of .gitignore
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.