visual-studio-2015 - changes - revert git example
Mensaje de error de Visual Studio 2015 Git "No se puede extraer/cambiar porque hay cambios no confirmados" (12)
Estoy teniendo dificultades para hacer un tirón desde el
origin
.
Sigo recibiendo:
"No se puede extraer porque hay cambios no confirmados. Confirme o deshaga los cambios antes de volver a extraer. Consulte la ventana Salida para más detalles".
Esto también se aplica al cambio de ramas. Recibo un mensaje similar, pero esto no siempre sucede.
Estoy usando Visual Studio 2015 Update 1 y Visual Studio Team Services Git.
En mi máquina tengo una sucursal
master
local y sucursales de desarrollo.
Cada vez que cambio a
master
y luego hago un pull, aparece el mensaje de error.
He recurrido a hacer un alijo y colocar alijo (línea de comando) y a veces uso
TortoiseGit
para hacer el tirón y funciona.
Lo extraño es que incluso si trato de revertir (en los archivos no confirmados) usando TortoiseGit, muestra que se revirtió con éxito (ya he intentado deshacer Visual Studio, no pasa nada).
Intentando tirar de nuevo, sigue siendo el mismo problema.
Los archivos no confirmados estarán allí y, a veces, cuando hago un
git status
, dice que no hay nada que confirmar.
Solo una nota: esto puede suceder incluso después de cambiar de una rama a
master
.
En este caso, no hay forma de que haya cambios no confirmados, porque en primer lugar no habría podido cambiar.
Todavía soy nuevo en Git, pero me gustaría saber si hay una mejor manera de resolver esto, ya que me gustaría usar un entorno en lugar de cambiar entre diferentes entornos para cada tarea; Es más fácil para mí hacer todo, desde Visual Studio. Ya he leído sobre:
TFS / GIT en VS No se puede cambiar a maestro porque hay cambios no confirmados
ACTUALIZAR
Parece que este problema tiene que ver con los finales de línea.
Al hacer un
git diff -R
, puede ver que se ha agregado un final de línea, "^ M", y es diferente.
Eliminar el
* text=auto
en gitattributes (luego verificar los cambios) y volver a colocarlo de nuevo para que los gitattributes no indiquen un cambio de sí mismo que deba confirmarse parece ayudar, no habrá ningún cambio.
En
Visual Studio
abra la
Output Window
y cambie
Show output from
a
Source Control - git
,
git
le informará sobre lo que impide que se arrastre.
Por supuesto, una de las causas más comunes puede ser algo como esto:
The pull would overwrite your local changes to the following 44 files:
<Here you can probably see a list of 44 files>
Simplemente significa que se han agregado 44 archivos al repositorio
remote
que no forman parte del repositorio
local
.
Abra
Git Bash
y ejecute este comando:
git add *
Esto puede resolver el problema o terminar en un error como este:
$ git add *
The following paths are ignored by one of your .gitignore files:
TestResults
Use -f if you really want to add them.
Si está seguro de agregarlos a la reproducción
local
, simplemente agréguelos usando
git add * -f
o elimine los archivos agregados por error del
remote
.
Espero que esto ayude.
Escriba
git status
en una línea de comando abierta en ese directorio.
Si hay texto rojo y / o verde, ha cambiado algunas cosas y no se ha agregado ni confirmado.
Puede revertir los archivos (haciendo
git checkout -- <file>
), o agregue y confirme (haciendo
git add --all
después
git commit -m "commit message"
).
A continuación, puede consultar las sucursales o cualquier otra cosa que desee hacer.
Este problema generalmente ocurre cuando hay un archivo / cambio que no se ha confirmado localmente, pero se incluye en la acción de extracción.
Por ejemplo, agrega un nuevo archivo "test.txt" desde su carpeta de repositorio Git local directamente (fuera de Visual Studio). Este archivo puede aparecer en la opción "Archivos no rastreados", por lo que cuando confirma cambios, este archivo no se ha rastreado ni confirmado. Y luego otra persona también crea un "test.txt" con la misma ruta y lo compromete y lo empuja. Ahora, cuando realiza una acción de extracción, el archivo "test.txt" se incluye en la acción de extracción y recibirá el mensaje de error que indica que hay cambios no confirmados. Por lo tanto, debe verificar si tiene archivos / cambios que no se han confirmado y confirmarlos antes de extraerlos.
Esto funcionó para mí. Simplemente fui al directorio del proyecto y verifiqué si hay algo allí
git status
Luego realicé un tirón usando
git pull
Luego reinicié Visual Studio 2015 y extraje la rama que estaba causando este error. Esta vez sin problemas. Parece que fue un error en Visual Studio 2015, solo ocurre cuando deshace los cambios antes de realizar nuevos cambios. Este mismo problema no parece existir en Visual Studio 2017.
Esto sucede a veces incluso conmigo. Si está utilizando Visual Studio, hay una manera fácil de aclarar su camino.
Para Visual Studio 2013 y superior, siga las siguientes instrucciones, ya que esto funcionó para mí:
- Vaya al menú Herramientas → Administrador de paquetes NuGet → Consola del Administrador de paquetes .
-
Escribe
git reset
y presiona Enter
Eso es. Git se restablecerá y luego podrá extraer su solicitud fácilmente.
VS2015: Herramientas> Administrador de paquetes Nuget> Consola del administrador de paquetes. Trabajado como un encanto. Gracias.
Estos son los pasos que he seguido:
- Consulte la ruta del archivo no confirmado en la ventana de salida
- Navegue a esa ruta y elimine ese archivo de la carpeta
- Deshaga sus cambios de Team Explorer en Visual Studio para agregarlos nuevamente
Para mí no tuve ningún cambio no confirmado ni ningún archivo sin seguimiento, y Visual Studio 2015 aún presentó la advertencia.
- Cierre la solución en Visual Studio, salga de Visual Studio.
-
Abra
Git Bash
(o su interfaz de usuario Git favorita) - Navegue a su repositorio (o abra el repositorio con la interfaz de usuario de Git)
-
git pull
(o realiza pull en la interfaz de usuario de Git) -
Se produce la fusión (es de esperar que no haya conflictos, como en mi caso), se abre
vi
(o la herramienta de resolución de fusión predeterminada) -
:wq
luego presionaENTER
envi
(o calma manejar la herramienta de fusión que apareció opcionalmente) y espero que esto lo resuelva como para mí. - Inicie Visual Studio 2015, abra el proyecto.
Agregué un paso a paso más seguro al ordenar cerrar y abrir la solución y Visual Studio. Esto puede ser demasiado cauteloso, y tal vez una recarga sería suficiente. Este síntoma podría ser un error de las partes de integración de Visual Studio Git, y tal vez se resolverá en el futuro.
Para mí, este problema fue causado por tener dos archivos, "Web.Config" y "web.config". Supongo que esto está bien en Linux / Unix, pero Windows solo puede almacenar uno de ellos localmente. Detecté esto en devops azules explorando los archivos. Eliminé uno de ellos y se resolvió el problema. Supongo que este problema podría ser causado por cualquier archivo.
Para mí, la "Actualización" en la pregunta fue la respuesta. Agregué un archivo .gitattributes en la raíz de mi repositorio e incluí solo lo siguiente, de modo que las terminaciones de línea solo se normalizarían en los casos en que el archivo sea texto.
*.txt text
*.html text
*.css text
*.js text
# These files are text and should be normalized (Convert crlf => lf)
*.gitattributes text
.gitignore text
*.md texttesting
Pruebe con estos comandos yendo al directorio de trabajo del proyecto en el símbolo del sistema.
git add -A
git commit -m "your message"
git fetch origin master
git pull origin master
git push origin master //To push to the Git system
Tuve este problema en Visual Studio 2017 build 15.5 y lo que me solucionó fue ir a Configuración de Team Explorer → Configuración global y configurar " Podar ramas remotas durante la búsqueda " y " Rebase rama local al tirar " a Verdadero .
También MS tiene las Instrucciones aquí: https://docs.microsoft.com/en-us/azure/devops/repos/git/git-config?tabs=visual-studio&view=vsts#prune-remote-branches-during-fetch El momento de facepalm es cuando te das cuenta de que "Recomendamos establecer esta opción en True a nivel global". no es la configuración predeterminada en esos elementos.
Otra instancia de este problema ocurre en el caso de que tenga un servidor de compilación separado y la solución reciba actualizaciones frecuentes de NuGet en los compiladores. La primera persona que actualice los paquetes NuGet y sincronice el repositorio no tendrá problemas, pero si alguien más intenta la actualización localmente, antes de realizar una sincronización, aparecerá este mensaje y VS no le permitirá extraer o insertar código. Para evitar este problema, todos deberían tener el hábito de sincronizar antes de realizar actualizaciones locales. Una vez encontrado, la mejor manera que hemos encontrado para resolverlo es guardar cualquier código no confirmado que necesite conservar ( https://marketplace.visualstudio.com/items?itemName=vii.GitStashExtension ), luego restablezca su repositorio al encabezado actual .
Yo tuve este problema también. Una solución fácil fue que seleccioné Confirmar en la solución para ver los archivos no confirmados (o usar fácilmente Team Explorer → Cambios ).
Luego deshago cada archivo haciendo clic derecho. Antes, lo probé Deshacer en toda la solución, pero no funcionó correctamente. Por otra parte, utilicé Team Explorer → Sync → Pull , y funcionó.