pendientes - TFS/GIT en VS No se puede cambiar a maestro porque hay cambios no confirmados
git vs tfs (12)
He configurado un repositorio GIT para una solución VS 2013 en visualstudio.com. El repositorio funcionó muy bien mientras me estaba acostumbrando a usar TFS (en modo GIT).
Entonces decidí familiarizarme con Branch, así que creé una rama del master. He hecho bastantes cambios en esta rama. Realicé los cambios a lo largo del tiempo y realicé una sincronización para enviar mis confirmaciones locales al repositorio de visualstudio.com. Todo esto funciona
El problema que estoy teniendo es que de alguna manera perdí la capacidad de volver a la rama principal. No puedo fusionar mi rama recién creada en el maestro. Cada vez que intento hacer algo que involucre al maestro, obtengo el siguiente error en VS:
No se puede cambiar a maestro porque hay cambios no confirmados. Confirma o deshace tus cambios antes de cambiar de rama. Vea la ventana de Salida para más detalles.
La ventana de Salida nunca contiene ningún ''detalle'' ...
¿A qué "cambios no confirmados" se refiere este mensaje? Como no puedo ingresar a la rama principal, no tengo forma de comprometerme con ninguno de sus cambios (¿tampoco estoy seguro de que quiero hacerlo?). Y la rama actual (solo otra) en la que estoy se ha comprometido y sincronizado.
Realmente estoy aprendiendo TFS, GIT y control de fuente. ¿Cómo me recupero con seguridad de este problema?
Bien, tuve el mismo problema que rwkiii: este es un error en Visual Studio y no es fácil de arreglar. Aquí están los síntomas:
Visual Studio indica que no puede fusionar / cambiar Braches / etc. porque tiene cambios no confirmados, lo cual está bien, excepto que se han confirmado todos los cambios.
No se puede cambiar a maestro porque hay cambios no confirmados. Confirma o deshace tus cambios antes de cambiar de rama. Vea la ventana de Salida para más detalles.
Here''s una captura de pantalla para ser más claro.
Si mira la ventana de salida, puede parecer vacía, pero debe cambiar "Mostrar salida desde" a "Control de fuente - Git". Esto mostrará el archivo que Visual Studio cree que tiene cambios.
Ahora, las cosas que probé no lo arreglaron (por lo que no es necesario):
- Reiniciar Visual Studio
- Reiniciar la máquina
- Proyectos de conmutación
- Usar herramientas git externas (todas las cuales dicen "sin cambios")
- git reset
- Haciendo cambios arbitrarios en el archivo y cometiendo eso. Se compromete bien, VS todavía piensa que hay más cambios
Al final, tuve que ir y eliminar el archivo del disco, luego "deshacer" ese cambio desde la ventana de Team Explorer:
No es la solución más ideal, pero parece arreglarlo.
El problema es que a veces después de la ruta de acceso a algunos archivos no coinciden sus equivalentes en la base de datos del repositorio porque la comparación es sensible a mayúsculas y minúsculas.
Por ejemplo, podría tener "MyLibrary / ABC / Folder / MyFile.cs" en el repositorio pero "MyLibrary / Abc / Folder / MyFile.cs" en el disco. No se detectarán cambios en "estado de git", pero Visual Studio bloqueará el cambio de rama.
Suprimir solo MyFile.cs del disco en ese caso no resolverá el problema; deberá eliminar el directorio ABC y luego deshacer los cambios para Visual Studio para recrear la estructura de la carpeta con los nombres correctos.
Hola, esto hizo el truco para mí ...
Intente utilizar el símbolo del sistema Team Explorer> Confirmación no sincronizada> Acciones> Abrir símbolo del sistema
Hacer un checkout de git branchName
Los cambios no confirmados significan que ha modificado uno o más archivos que ya se han agregado a git y esos cambios no se han "guardado" en una confirmación o en su almacenamiento de git.
Cuando se cambia de una rama a otra no se permite tener cambios sin compromiso (sin embargo, los archivos nuevos que no se han agregado a git son correctos) ya que los cambios en otras ramas pueden sobrescribir los cambios que no se hayan modificado.
No estoy familiarizado con la forma en que Visual Studio se integra con git porque yo mismo uso PoshGit con Powershell
La forma de proceder es:
- Deshacer tus cambios
- Confirma tus cambios
- O oculte sus cambios (consulte la sección Flujo de trabajo interrumpido).
Me enfrenté al mismo problema, entonces noté que los cambios no comprometidos son de un proyecto diferente. una vez que cometí esos cambios, me permitió cambiar de rama.
Me he dado cuenta algunas veces que los elementos sln están marcados como cambiados pero no aparecen de esa manera en el Explorador de soluciones. Lo que he hecho como otros sugirieron es en el símbolo del sistema,
git status (this should show you culprit files)
luego agregue los archivos individuales. O lo que personalmente hago es ejecutar:
git add -A
que agregará todos los archivos modificados para verlos bien en Team Explorer, donde puedes deshacer / eliminar como quieras. No he tenido un problema con este enfoque.
Normalmente nos topamos con este problema, porque tenemos un archivo particular que siempre debe excluirse de los cambios, pero a veces se modifica.
Lo que funciona para nosotros cuando aparece el mensaje de error es:
- En VS, busque en la ventana Salida para ver qué archivo está causando el problema.
- En Git bash ejecuta
git update-index --no-assume-unchanged TheNameOfTheFileCausingTheIssue
- En VS Undo Checkout en este archivo
- En VS, cambie la rama en Administrar sucursales .
Esto puede o no funcionar para su situación, pero lo he agregado en caso de que ponga a alguien en la dirección correcta. Asegúrese de comprender el comando git antes de ejecutarlo.
Resolví un problema similar sin tener que eliminar un archivo o realizar nuevos cambios.
Después de realizar cambios en BranchA, fusionarme con Master y presionar a través de Git bash, la próxima vez que abrí el proyecto en VS y miré Team Explorer, mostró que había cambios en la rama de Master. No se presentaron cambios al verificar el estado a través de Git bash, pero se listaron 10 archivos en VS Output. Diffs en todos los archivos no mostraron cambios. Intenté una modificación de compromiso en este punto, pero no me permitió modificar la confirmación anterior (consulte más información a continuación, ya que en última instancia, esto solucionará mi problema).
Intenté cambiar a BranchA en VS y recibí el mensaje de que no puedo cambiar debido a cambios no confirmados. Cambie a BranchA a través de Git bash, y el estado no muestra cambios. Actualice VS Team Explorer para que esté ahora en BranchA, muestre 14 cambios de archivos, incluso más que Master, pero nuevamente, los diffs en todos los archivos no mostraron cambios.
Mientras estaba en BranchA en Team Explorer, hice clic en Actions-> Amend Previous Commit. Esta vez dejó que sucediera y todos los cambios se borraron. Luego mostró una confirmación pendiente, pero el estado de comprobación en Git bash no mostró nada pendiente, por lo que al volver a Inicio en Team Explorer y al regresar, borró el mensaje de confirmación pendiente.
Cambiado a Master en Team Explorer, ya no hay más cambios que muestren allí. Todo está bien.
Terminé resolviendo mi problema borrando mi repo desde el Explorador de archivos y luego desde Visual Studio seleccionando "deshacer todos los cambios" cuando las eliminaciones se registraron para comprometerse. Al restaurar el repositorio, Visual Studio funcionó como se esperaba en tándem con git.
Tuve este problema después de cambiar el nombre de un archivo, comenzando con una letra minúscula a una letra mayúscula después de que ya había confirmado el archivo. Lo arreglé cambiando el nombre del archivo (acabo de agregar un ''1'' al final) y luego confirmando ese cambio. Entonces pude cambiar de rama.
Como mencioné anteriormente, tuve que cambiar el combo ''Mostrar salida desde:'' a ''Control de fuente - Git'' en la ventana de Salida para ver el nombre del archivo ofensivo, que luego me mostró que el nombre de archivo VS / git era expecting no se capitalizó, mientras que el nombre en el explorador de soluciones / en el sistema de archivos se capitalizó.
Una cosa que funcionó para mí es:
1) Haga clic derecho en la rama que desea pagar.
2) Haga clic en la opción Restablecer.
3) Haga clic en Eliminar cambios (hard)
4) Haga clic derecho en la rama y seleccione pago
Utilicé el comando del comando git para resolver el problema. No puedo garantizar que sea la mejor manera o la única, pero funcionó en Visual Studio 2013.
En Cambios en Team Explorer, elija Abrir símbolo del sistema .
En el símbolo del sistema, escriba:
estado de git
Enumerará los archivos que están abiertos para el cambio.
Copie esos archivos (por si acaso), luego puede descartar los cambios en el directorio de trabajo en el símbolo del sistema.
git checkout - mysubdir / myfile.ext
No intente cambiar ramas en Visual Studio, ¡aún no funcionará!
En cambio, en el símbolo del sistema cambie a la rama en cuestión.
git checkout branchname
Cuando regrese a Visual Studio, le pedirá que vuelva a cargar el proyecto. Después de eso, la rama se actualizará correctamente a la rama que elija desde la línea de comando.
hth