Por qué Visual studio está confirmando archivos en mi.gitignore archivo?
Estoy usando Visual Studio 2013 Express usando Git en un proyecto.
Creé mi repositorio y copié los archivos del proyecto en él desde otro directorio. Luego revisé mis archivos .gitignore
y .gitattributes
. .gitignore
estaba preconfigurado y buscaba cubrir todo lo que necesitaba ignorar para las confirmaciones en este punto.
Seleccioné la pestaña Cambios en Visual Studio en la pestaña "Team Explorer" y vi que todos mis archivos no estaban rastreados, como era de esperar. Luego hice clic en "Agregar todo". Supuse que VS lo haría solo agregue archivos que no coincidan con los de mi .gitignore
a la lista "Cambios incluidos". En su lugar, todos los archivos se agregaron a la lista "Cambios incluidos".
Luego pensé que tal vez el archivo .gitignore
se usaría al confirmar y que solo los archivos que no coincidan con los de .gitignore
se confirmarían. Así que agregué un mensaje de confirmación y hice clic en "Confirmar".
Cuando selecciono "Ver historial" del menú desplegable " Acciones "en la pestaña" Cambios", se me presenta un panel a la izquierda de mi " Equipo Explorer " vista que muestra todas las confirmaciones que he realizado. Solo hay 1 commit. Cuando hago doble clic en esa confirmación, la pestaña" Team Explorer " muestra Commit 8db34b1c
y todos los archivos de mi proyecto se enumeran allí en la vista de árbol con [add] después de su nombre.
Por ejemplo, App_Data/Movies.mdf
y App_Data/Movies.ldf
se enumeran a pesar de que mi .gitignore
incluye las líneas
# SQL Server files
App_Data/*.mdf
App_Data/*.ldf
No entiendo cómo el .archivo gitignore se está utilizando aquí o lo que los "Cambios incluidos", "Cambios excluidos" o "Archivos sin seguimiento" las secciones significan.
Se agradecería una explicación del comportamiento y las secciones anteriores.
Editar--
Borré mi .git directory, creó un nuevo repositorio, copió mis archivos de proyecto de nuevo y luego tomó capturas de pantalla de lo que veo.
Aquí están las imágenes de mi.archivo gitignore y mi pestaña "Cambios".
Hay esta pregunta SO y esta pregunta msdn que muestra que otras personas parecen tener problemas como bien. Traté de borrar el .archivo xml añadido por VS en mi .git directory (como se indica en la pregunta msdn), pero eso no resolvió el problema para mí.
Editar 2 {
Esta es mi estructura de directorios actual:
/MvcMovie/
|--.git/
|
|---MvcMovie/
| |--App_Data/
| | |--Movies.mdf
| | |--Movies.ldf
| |
| |--App_Start/
| |--etc...
|
|--packages/
|--.gitignore
|--.gitattributes
|--MvcMovie.sln
|MvcMovie.v12.suo
5 answers
@dustinmoris tiene razón en su respuesta, pero la solución no es tan obvia inmediatamente como el procedimiento te llevaría a creer. Así que permítanme guiarlo explícitamente a través del proceso para asegurarse de que los archivos en su archivo .gitignore
sean obedecidos por Visual Studio.
1. Cree Su Solución Y Agréguela A Source Control
He creado una solución XAML de ejemplo MVVM Light y se puede ver que todos los archivos actualmente no rastreados que idealmente deberían ser añadido a la siguiente confirmación se muestran con un poco más verde junto a sus iconos.
El problema es que el archivo MvvmLight.Win81_TemporaryKey.pfx
está listado para ser agregado aunque todos los archivos de tipo .pfx
están explícitamente llamados para ser ignorados en mi .gitignore
.
Esto es aún más obvio si selecciono la solución en el panel Team Explorer
y luego selecciono el botón Changes
. Veo una lista de todos los archivos pendientes de inclusión en la próxima confirmación.
Esto la lista contiene todos los archivos de la Solución, no solo el subconjunto especificado por el archivo .gitignore
.
2. Cierre Visual Studio y Elimine el archivo ms-persist.xml
Está en un directorio oculto por lo que es un poco difícil de encontrar. Debe ubicarse en la siguiente ruta
Directorio de soluciones \.git \ ms-persist.xml
3. Vuelva A Abrir La Solución y Confirme Los Archivos
Usted notará que parece como si su la solución ya no está bajo control de código fuente porque todos los iconos han perdido sus signos más verdes, pero no te preocupes, está bien.
Diríjase al panel Team Explorer
y luego seleccione el botón Changes
. Una vez más, verá que el proyecto todavía está siendo rastreado por el control de código fuente, así como una lista de todos los archivos que se agregarán en la próxima confirmación. Más importante aún, notará que su lista .gitignore
se adhirió correctamente a esta vez y todos los archivos especificados como ignorados no son más larga lista como cambios pendientes que se agregarán a la próxima confirmación. Como puede ver a continuación, el archivo MvvmLight.Win81_TemporaryKey.pfx
ya no está programado para la próxima confirmación.
Espero que eso ayude a alguien. Después de toda esa molestia aquí está mi consejo honesto:
Aprenda y use la interfaz de línea de comandos ya que proporciona la gama de funcionalidades que ofrece git y tiene la misma interfaz en todos plataforma.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:31:28
Si alguien se pregunta cómo arreglarlo. Esta es la solución: Ve a tu casa .carpeta git (puede estar oculta) y abre el ms-persist.xml y puede ver los archivos rastreados, elementos excluidos, etc.
Simplemente arregle manualmente lo que VS ha estropeado y reinicie el IDE y debería estar bien de nuevo!
No borre todo .carpeta git como se menciona a menudo en otros hilos SO!
Gracias al blog de Eric Nelson post: https://ericnelson.wordpress.com/2014/06/21/is-visual-studio-2013-ignoring-your-gitignore-file/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-20 20:13:45
AppData/*.mdf
y AppData/*.ldf
refiérase a los archivos .mdf
y .ldf
que existen en el directorio AppData
que se encuentra en la raíz de su repositorio git.
Su directorio AppData
realmente existe debajo del directorio MvcMovie
. Puedes añadir:
MvcMovie/AppData/*.mdf
MvcMovie/AppData/*.ldf`
A su .gitignore
para ignorar esos archivos específicos, o, si desea ignorar los directorios .mdf
y .ldf
en todos AppData
carpetas en todo su repositorio:
**/AppData/*.mdf
**/Appdata/*.ldf
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-10 06:53:26
Si cambia las especificaciones del archivo de base de datos SQL en el .gitignore a:
# SQL Server files
*.mdf
*.ldf
¿No ignoraría eso todos los archivos de base de datos SQL en todo el árbol de carpetas de la solución, sin importar en qué subcarpeta se encontró?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-30 22:12:18
- En Team Explorer, vaya a su solución y luego a la vista cambios.
- Seleccione los archivos tontos que desea excluir.
- Haga clic derecho y seleccione Ignore esta extensión.
- Verá que se han realizado cambios en el .gitignore que ahora puedes comprometer.
.gitignore
*.ldf
*.mdf
O puede usar Ignorar este elemento local para ignorar solo ese elemento específico si no desea ignorar una extensión completamente.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-22 13:08:28