repositorio git ignorando todos los .dlls

88

El título lo dice todo. Estoy intentando agregar mis paquetes NuGet al repositorio. Se detecta todo menos los archivos .dll.

El archivo gitignore no contiene referencias a * .dll. Los archivos .dll no se reconocen cuando se encuentran en cualquier lugar de todo el repositorio. info / exclude también está vacío.

También he clonado el repositorio (sistema de archivos a sistema de archivos en lugar de remoto a sistema de archivos) sin suerte. Este problema también ocurre en dos equipos diferentes.

Podría agregar los archivos .dll manualmente, pero deberían ser rastreados. ¿Por qué no están siendo rastreados?

Paul Knopf
fuente
26
¿Qué git config --get core.excludesfiledice?
Antony Hatchkins
2
Además, generalmente no es una buena idea usar git para rastrear archivos binarios, ya que git no puede calcular de manera eficiente los deltas entre revisiones, por lo que mantener todas las versiones será un desperdicio de espacio. Si las DLL se generan sobre la marcha, es mejor simplemente ignorarlas en git. Si no es así, es mejor utilizar otro mecanismo de sincronización (por ejemplo, rsync).
Antony Hatchkins
Estos son paquetes de NuGet que estoy tratando de agregar a git. No estoy usando la funcionalidad de "Restauración de paquetes" de NuGet, así que necesito que se registre la carpeta de paquetes completa.
Paul Knopf

Respuestas:

121

¿Tiene ~/.gitignore_globalo ~/.gitignoreen su directorio de inicio que también podría incluir estos patrones de archivo?

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

Stuart M
fuente
6
Dado que está trabajando con archivos dll, está en la plataforma Windows, por lo que ~ significa $ HOMEDRIVE $ HOMEPATH en Windows 7
Antony Hatchkins
9
Este resultó ser el problema. Sin embargo, no agregué este archivo de ignorar global. ¿Alguna razón por la que saldría de la nada? Ahora que lo pienso, recientemente instalé SourceTree (de Atlassian). ¿Quizás es el culpable?
Paul Knopf
6
Tuve el mismo problema, también instalé SourceTree antes de eso. Así que supongo que es razonable suponer que SourceTree agregó el archivo de ignorar global ya que solía funcionar en el pasado.
Andreas Krebs
8
Editar: OK, lo agrega el enlace de
Andreas Krebs
31
Tuve que correr git check-ignorepara averiguar dónde estaba el archivo. Aficionado en ~ / Documents / gitignore_global.txt
Matt Canty
98

Si usa SourceTree y la configuración predeterminada, ignorará todas las DLL de forma predeterminada ... Herramientas => Opciones => Git, luego "Editar archivo" ... agregue un "#" antes de .dll => "# .dll" .. . guardar y cerrar.

Luego, para el Explorador de Windows en la carpeta de paquetes, abra una terminal GitBash y escriba "git add". y déjelo funcionar, vuelva a SourceTree, espere un segundo y todas las DLL de paquetes que faltan aparecerán para que las confirme y las envíe.

KevinB
fuente
13
Respuesta correcta para usuarios de SourceTree;)
jmpcm
Sabía sobre una lista global de ignorados, no pude encontrarla en la GUI .. ¡Gracias!
Christoph
Herramientas => Opciones => Lista global de ignorados de Git / Mercurial ... Si no tiene una, puede crearla y señalarla allí.
KevinB
2
Ubicación del archivo: ~ / Documents / gitignore_global.txt
James McCormack
Esto funcionó para el árbol de fuentes, pero cómo para Visual Studio los ignorados no estaban en mi gitignore. Cualquiera que use el árbol de origen para esta tarea
Demodave
11

Podría agregar los archivos .dll manualmente, pero deberían ser rastreados. ¿Por qué no están siendo rastreados?

No, no se deben rastrear, a menos que los haya agregado. Solo se realiza un seguimiento de los archivos que ya se han agregado y confirmado; eso es lo que significa "rastreado".

Intente agregar manualmente uno de ellos a través de git addy le dirá por qué los está ignorando y le pedirá que use git add -fpara agregar el archivo de todos modos.

meagar
fuente
Hice un "git add '/ packages'" y no detectó los .dlls. Luego usé -f y lo agregué. Sin embargo, encontré el problema. "* .dll" estaba en mi ignorar global. No tengo ni idea de dónde vino esta ignorancia global.
Paul Knopf
2

Necesitas decirle explícitamente a git que rastree cualquier archivo nuevo.

  1. Ejecutar git add filenamepara agregar el archivo al índice de git.

  2. Ejecutar git commitpara confirmar cambios en su índice.

git status también debería mostrar la lista de archivos y directorios sin seguimiento.

Si desea enumerar todos los archivos en el repositorio que gitignore ignora, puede ejecutar:

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

Si desea enumerar todos los archivos sin seguimiento en el repositorio:

git ls-files . --exclude-standard --others
Tuxdude
fuente
2
Tuve que "git add -f" para rastrear los archivos que de hecho fueron ignorados. Resultó ser una entrada en el archivo de ignorar global, que alguna aplicación ha puesto allí sin saberlo.
Paul Knopf
2

Enfrenté un problema similar. No puedo agregar el archivo .dll desde el directorio del paquete a mi git, luego encontré el archivo gitignore_global.txt ya que sourcetree agregó automáticamente este archivo como una configuración global de ignorar git. Eliminé * .dll del archivo gitignore_global.txt y funciona bien para mí.

Ubicación del archivo gitignore_global.txt como se muestra a continuación

C: \ Users \ XXXX \ Documents \ gitignore_global.txt o puede encontrarlo en sourcetree TOOL => OPTION => pestaña GIT y descubrir la lista global de ignorados

Niraj Trivedi
fuente
1

En mi caso, no había referencias .dll en el archivo .gitignore y no tenía ningún archivo global. Sin embargo, en el subdirectorio .git, encontré un archivo llamado ms-persist.xml. Cerré todas las instancias de Visual Studio y luego agregué mis .dlls faltantes manualmente a ese archivo. Cuando volví a abrir Visual Studio, los .dlls mostraban que necesitaban ser registrados. Los registré y ahora estoy dorado ...

Curtis
fuente
0

Tiene un .gitignorelugar global o más .gitignorearchivos en subdirectorios, en relación con la raíz de su proyecto.

En sistemas Linux y MacOS, lo más probable es que el git-ignore global esté en su hogar ~/

~/.gitignore_global

En Windows, es probable que esté en su directorio de usuarios. O su usuario local (que puede averiguar escribiendo ECHO %USERPROFILE%o whoamien la línea de comandos.

Si no está allí, seguramente a .gitconfigestá presente en su lugar. Busque aquí la ubicación del gitignore (por ejemplo, la Documentscarpeta del usuario ).

Editar : Úselo git config --list --show-originpara obtener detalles de la configuración de git que contribuye y sus ubicaciones de archivo correspondientes.

Lorenz Lo Sauer
fuente
0

Sé que esta pregunta es muy antigua, pero agrego para otros que puedan visitar esta pregunta en el futuro. Puede modificar su archivo de ignorar global como las respuestas mencionadas anteriormente, pero eso afectará TODOS sus repositorios de git. Si, en cambio, desea un enfoque más granular, puede excluir archivos DLL específicos o carpetas específicas en su proyecto individual .gitignores. Esto anula la configuración de ignorar todos y obliga a los archivos a ser detectados y manejados por git. Creo que este es un mejor enfoque.

.gitignore (para su proyecto en particular)

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

# rest of .gitignore
jp36
fuente