Usando Git con Visual Studio [cerrado]

1455

Como usuario de Visual SourceSafe desde hace mucho tiempo (y que odia), estaba discutiendo cambiar a SVN con un colega; sugirió usar Git en su lugar. Dado que, aparentemente, se puede usar como punto a punto sin un servidor central (somos un equipo de 3 desarrolladores).

Sin embargo, no he podido encontrar nada sobre las herramientas que integran Git con Visual Studio: ¿existe tal cosa?

¿Cuáles son las tecnologías disponibles para usar Git con Visual Studio? ¿Y qué necesito saber acerca de cómo difieren antes de comenzar?

Hierba caudill
fuente
44
Acabo de agregar Git Source Control Provider para VS 2010, por lo que aún funciona.
Wade73
3
Pago y envío este tutorial del equipo VS . La próxima actualización; La actualización 2 para VS 2012 llegará en cualquier momento. También puede descargar la vista previa de tecnología comunitaria (CTP) para VS2012 desde aquí . Alternativamente, si está en CMMI, Agile, Scrum 1/2, etc., puede registrarse para obtener una cuenta gratuita (instancias de nube públicas o privadas) e invitar a miembros (compañeros de equipo, clientes) a su proyecto en TFS basado en web tfs.visualstudio. com
Annie
3
He estado usando Visual Studio y git durante dos años. Yo diría que la mejor solución a este problema es usar una aplicación de control de fuente separada como Atlassians SourceTree. Es gratis, fácil de instalar, tiene una buena GUI y es fácil de usar, puede navegar por múltiples repositorios (también conocidos como diferentes proyectos) al igual que navegaría por la web en Chrome y, lo más importante, admite múltiples sistemas de control de fuente. ¡Darle una oportunidad! ¡No te decepcionará, te lo aseguro!
Fazi
2
Git es compatible de forma nativa a partir de Visual Studio 2013
rustyx
17
Me encanta cómo 1342 personas han votado esta pregunta y algún idiota viene y la cierra de todos modos. Bien hecho StackOverfolow ... ¿Qué importa si no cumple con los criterios de SO si es que mucha gente lo encuentra tan útil? ¿No es el objetivo de este sitio web ser útil?
thebunnyrules

Respuestas:

1070

En enero de 2013, Microsoft anunció que agregarán soporte completo de Git en todos sus productos ALM. Han publicado un complemento para Visual Studio 2012 que agrega la integración de control de código fuente de Git.

Alternativamente, hay un proyecto llamado Git Extensions que incluye complementos para Visual Studio 2005, 2008, 2010 y 2012, así como la integración de Windows Explorer. Se actualiza regularmente y, después de haberlo utilizado en un par de proyectos, me ha resultado muy útil.

Otra opción es Git Source Control Provider .

Jon Rimmer
fuente
99
ted.dennison: de acuerdo con esta página ( code.google.com/p/gitextensions ) es un complemento VS 2005/2008.
Jonas
10
Para corregirme, la fuente está alojada en Github, los MSI no.
Chris S
55
He instalado extensiones de git, funciona "por" visual studio y no está completamente integrado. ¿Existe una solución que permita el check-in - check-out del Explorador de soluciones?
Dani
44
Dani, alguien está trabajando en un proveedor de control de fuente Git para VS que parece proporcionar un nivel de integración ligeramente más profundo: gitscc.codeplex.com
Jon Rimmer
3
¿Hay alguna opción para VS 2012?
Earth Engine
202

Uso Git con Visual Studio para mi puerto de Protocol Buffers a C #. No uso la GUI, solo mantengo una línea de comando abierta y Visual Studio.

En su mayor parte está bien: el único problema es cuando desea cambiar el nombre de un archivo. Tanto Git como Visual Studio preferirían que fueran ellos quienes le cambiaran el nombre. Sin embargo, creo que renombrarlo en Visual Studio es el camino a seguir: solo tenga cuidado con lo que hace en el lado de Git después. Aunque esto ha sido un poco doloroso en el pasado, he oído que en realidad debería ser bastante transparente en el lado de Git, porque puede notar que el contenido será prácticamente el mismo. (No es exactamente lo mismo, por lo general, tiende a cambiar el nombre de un archivo cuando cambia el nombre de la clase, IME).

Pero básicamente, sí, funciona bien. Soy un novato de Git, pero puedo lograr que haga todo lo que necesito. Asegúrese de tener un archivo git ignore para bin y obj, y * .user.

Jon Skeet
fuente
35
git debería estar bien con VS haciendo el cambio de nombre. Para un buen seguimiento de cambio de nombre en git log, solo debe asegurarse de organizar la parte 'eliminar' del cambio en la misma confirmación que la parte 'agregar'. git add -A lo hace fácil si su .gitignore está actualizado.
CB Bailey
40
También soy un novato git, y para decirte la verdad, prefiero usarlo desde la línea de comandos. Me daría un poco de miedo manejar el poder de git en una GUI que intenta ser "inteligente" y hacer algo de "magia" a mis espaldas.
hasen
1
Gracias por el consejo. Me acabo de mudar a git (y github) y nunca miraré hacia atrás. Mi cliente usa forzosamente (ugh!). Entonces, mi plan es hacer un pago desde la fuerza, hacer mi trabajo con git y luego volver a registrarlo.
Mark Beckwith
77
@CallMeLaNN: Estás haciendo una gran suposición allí, acerca de que los novatos en Git tienen dificultades al usar la línea de comando. Mira el comentario de hasan j de abril de 2009.
Jon Skeet
Normalmente agrego .user, * .suo, bin, obj,. y _ * a mi lista de ignorados ... si hay uno de los anteriores que deseo agregar, aún puedo agregarlo manualmente.
Rastreador1
93

Git Source Control Provider es un nuevo complemento que integra Git con Visual Studio.

yysun
fuente
¿Hay alguna posibilidad de que funcione en 2005?
Art
3
Bien. TBH, la interfaz gráfica de esto es exactamente lo que estaba buscando cuando busqué una GUI para git dentro de VS 2010. Gracias por publicar esto. Las otras respuestas no son lo que necesito. Son pobres en comparación con VisualSVN.
JDPeckham
1
Recomiendo ver la sección de revisión en marketplace.visualstudio.com/… antes de decidir instalarlo.
QMaster
53

He investigado esto un poco en el trabajo (tanto con Subversion como con Git). Visual Studio en realidad tiene una API de integración de control de código fuente que le permite integrar soluciones de control de código fuente de terceros en Visual Studio. Sin embargo, la mayoría de las personas no se molestan por un par de razones.

La primera es que la API casi asume que estás usando un flujo de trabajo de pago bloqueado. Hay muchos ganchos que son costosos de implementar, o simplemente no tienen sentido cuando está utilizando el flujo de trabajo de edición-fusión más moderno.

El segundo (que está relacionado) es que cuando utiliza el flujo de trabajo de edición-combinación que tanto Subversion como Git fomentan, realmente no necesita la integración de Visual Studio. Lo más importante de la integración de SourceSafe con Visual Studio es que usted (y el editor) pueden saber de un vistazo qué archivos posee, cuáles deben desprotegerse antes de poder editarlos y cuáles no puede desproteger, incluso si lo desea. Entonces puede ayudarte a hacer cualquier vudú de control de revisión que necesites hacer cuando quieras editar un archivo. Nada de eso es parte de un flujo de trabajo típico de Git.

Cuando usa Git (o SVN normalmente), todas sus interacciones de control de revisión tienen lugar antes de su sesión de desarrollo o después (una vez que tiene todo funcionando y probado). En ese punto, realmente no es demasiado doloroso usar una herramienta diferente. No tienes que cambiar constantemente de un lado a otro.

TED
fuente
22
¿Nunca se mueven o renombran archivos / directorios? Empecé a usar VisualSVN hace un par de meses y nunca pude volver.
JohnOpincar el
10
@TED ​​Para mí, esto significa que después de un largo desarrollo, debe recordar los motivos de cada cambio de archivo hasta que se registre. Si estoy trabajando en algo y veo que hay que arreglarlo en un área no relacionada que me gustaría revisar, arreglar y comprobar sabiendo que puedo eliminar ese cambio de mi memoria. Prefiero hacer esto desde VS
Peter M
44
El complemento Visual Studio de Git Extensions no trata de calzarse en la API de control de código fuente de caja bloqueada de la vieja escuela que Microsoft ha proporcionado. Se adapta muy bien a un flujo de trabajo de edición-fusión y, básicamente, solo agrega commit / push / pull e historial de archivos dentro del IDE. ¡Tener un historial de archivos en el menú contextual es extremadamente útil!
Jacob Stanley el
3
No estoy de acuerdo principalmente porque tener que salir del estudio visual para registrarse fomenta tiempos más largos entre los registros. Demasiadas personas ya se registran al comienzo del día y no se registran hasta el final (o peores días después). La integración con Visual Studio le permite mantener constantemente el control de fuente en su flujo de trabajo.
Chris McGrath
8
La integración del control de origen de Visual Studio a partir de VS2005 (¿VS2003?) No se inclina particularmente hacia un modelo de pago y registro. Mira AnkhSVN por ejemplo. Prefiero la integración VS, porque los cambios de nombre, etc. son más suaves.
Roger Lipscombe
38

Me parece que Git, trabajando en árboles enteros como lo hace, se beneficia menos de la integración IDE que las herramientas de control de origen que están basadas en archivos o siguen un patrón de pago-edición-confirmación. Por supuesto, hay casos en los que puede ser bueno hacer clic en un botón para hacer un examen de historia, pero no lo extraño mucho.

El verdadero deber es hacer que su archivo .gitignore esté lleno de cosas que no deberían estar en un repositorio compartido. Los míos generalmente contienen (entre otras cosas) lo siguiente:

*.vcproj.*.user
*.ncb
*.aps
*.suo

pero esto está fuertemente sesgado en C ++ con poco o ningún uso de ninguna funcionalidad de estilo de asistente de clase.

Mi patrón de uso es similar al siguiente.

  1. Código, código, código en Visual Studio.

  2. Cuando esté contento (punto intermedio sensato para confirmar código, cambie a Git, cambie de escenario y revise las diferencias. Si algo está obviamente mal, vuelva a Visual Studio y corríjalo, de lo contrario, confirme.

Cualquier combinación, rama, rebase u otro material SCM elegante es fácil de hacer en Git desde el símbolo del sistema. Visual Studio normalmente está bastante contento con las cosas que cambian debajo de él, aunque a veces puede necesitar volver a cargar algunos proyectos si ha alterado significativamente los archivos del proyecto.

Me parece que la utilidad de Git supera cualquier inconveniente menor de no tener una integración IDE completa, pero es, en cierta medida, una cuestión de gustos.

CB Bailey
fuente
11
No lo hace, definitivamente debería tener su archivo de proyecto bajo control de versiones.
CB Bailey
1
Esto es muy importante: recuperarse de olvidar incluir algo en .gitignore una vez que ha comenzado a comprometerse y ramificarse es doloroso, por decir lo menos ...
Benjol
3
@Benjol: No debería ser tan doloroso. Solo necesita git rm <file>y echo <file> >>.gitignore; git add .gitignoresobre las puntas de sus ramas activas. Una vez que haya confirmado el cambio, siempre podrá elegir la solución en otras ramas.
CB Bailey
1
@ Charles Bailey, mira mis aventuras en esta pregunta: stackoverflow.com/questions/1887049/…
Benjol
99
@ Mike Brown: ignora los archivos * .user, que son configuraciones específicas del usuario.
Srdjan Jovcic
31

Microsoft anunció Git para Visual Studio 2012 (actualización 2) recientemente. Todavía no he jugado con él, pero este video parece prometedor.

Aquí hay un rápido tutorial sobre cómo usar Git de Visual Studio 2012.

Chandramouleswaran Ravichandra
fuente
Recomiendo este ya que es un producto oficial de Microsoft. y se puede instalar en VS 2012 express y
Cheung
28

Tampoco te pierdas TortoiseGit ... https://tortoisegit.org/

tonyo
fuente
Sí, esta es una buena interfaz de usuario, pero no, no se integra con Visual Studio.
Scott Rippey
3
Git Source Control Provider agrega los comandos de TortoiseGit al menú contextual en Visual Studio.
HotN
26

Hay un Visual Studio Tools para Git de Microsoft. Sin embargo, solo es compatible con Visual Studio 2012 (actualización 2).

Sheng Jiang 蒋 晟
fuente
para visual studio 2012, esta es la mejor respuesta. ¡Parece que pusieron mucho esfuerzo en la implementación, y en mi experiencia funciona como se esperaba!
RoelF
2
No he podido descubrir cómo configurar "Visual Studio Tools for Git" de Microsoft para usar un repositorio privado de Github. ¿Has visto alguna documentación o tutoriales sobre eso?
golliher
Recomiendo ver la sección de revisión en marketplace.visualstudio.com/… antes de decidir instalarlo.
QMaster
18

El soporte de Git realizado por Microsoft en Visual Studio es lo suficientemente bueno para el trabajo básico (commit / fetch / merge and push). Mi consejo es solo evitarlo ...

Prefiero GitExtensions (o en menor proporción SourceTree ). Porque viendo el DAG es realmente importante para mí entender cómo funciona Git. ¡Y usted es mucho más consciente de lo que han hecho los otros contribuyentes a su proyecto!

En Visual Studio, no puede ver rápidamente la diferencia entre archivos o confirmación, ni (agregar al índice) y confirmar solo una parte de las modificaciones. Examinar tu historial tampoco es bueno ... ¡Todo eso termina en una experiencia dolorosa!

Y, por ejemplo, GitExtensions está incluido con complementos interesantes: búsqueda de fondo, GitFlow, ... y ahora, integración continua ¡ !

Para los usuarios de Visual Studio 2015 , Git está tomando forma si instala la extensión GitHub. Pero una herramienta externa es aún mejor ;-)

Philippe
fuente
Cómo funciona GitExtensions para usted en 2015? el menú no me funciona github.com/gitextensions/gitextensions/issues/2815
raklos
15

TortoiseGit ha madurado y lo recomiendo especialmente si ha utilizado TortoiseSVN.

SurfRat
fuente
10

Según lo mencionado por Jon Rimmer, puede usar GitExtensions. GitExtensions funciona en Visual Studio 2005 y Visual Studio 2008, también funciona en Visual Studio 2010 si copia y configura manualmente el archivo .Addin.

Henk
fuente
bueno Me pregunto quién está probando y aprobando la interfaz de usuario ... todos los mensajes son muy confusos ... mi única suposición es que se apresuraron a apagarlo y ver qué / por qué se queja el usuario.
ramnz
10

Actualmente hay 2 opciones para Git Source Control en Visual Studio (2010 y 12):

  1. Proveedor de control de fuente de Git
  2. Proveedor de Microsoft Git

He intentado ambos y he encontrado que el primero es más maduro y tiene más funciones. Por ejemplo, juega muy bien con git de tortuga y con extensiones de git, e incluso expone sus características.

Nota : Independientemente de la extensión que utilice, asegúrese de habilitarla Tools -> Options -> Source control -> Plugin Selectionpara que funcione.

Tarun
fuente