De TFS a Git

14

Soy un desarrollador de .NET y he usado TFS (servidor de base de equipos) como mi software de control de origen muchas veces. Las buenas características de TFS son:

  1. Buena integración con Visual Studio (por lo que hago casi todo visualmente, sin comandos de consola)
  2. Fácil proceso de check-out, check-in
  3. Fácil fusión y resolución de conflictos
  4. Construcciones automatizadas fáciles
  5. Ramificación

Ahora, quiero usar Git como la red troncal, el repositorio y el control de origen de mis proyectos de código abierto. Mis proyectos están en lenguaje C #, JavaScript o PHP con bases de datos MySQL o SQL Server como mecanismo de almacenamiento.

Acabo de usar la ayuda de github.com para este propósito y creé un perfil allí, y descargué una GUI para Git. Hasta esta parte fue muy fácil.

Pero estoy casi estancado en seguir adelante. Solo quiero hacer algunas operaciones simples (realmente simples), incluyendo:

  1. Crear un proyecto en Git y asignarlo a una carpeta en mi computadora portátil
  2. Desproteger / registrar archivos y carpetas
  3. Resolución de conflictos

Eso es todo lo que necesito hacer ahora. Pero parece que la GUI no es tan fácil de usar. Espero que la GUI tenga un Connect To... o algo así, y luego espero que se muestre una lista de proyectos, y cuando elijo uno, espero ver la lista de archivos y carpetas de ese proyecto, como explorar su proyecto TFS en Visual Studio. Entonces quiero poder hacer clic derecho en un archivo y seleccionar check-in... o check-out y cosas por el estilo.

¿Espero mucho? ¿Qué debo hacer para usar Git fácilmente como TFS? ¿Qué me estoy perdiendo aquí?

    
pregunta Saeed Neamati 15.10.2011 - 13:38

7 respuestas

19

Las ventajas que git ha obtenido al eliminar muchas suposiciones antiguas sobre lo que debería hacer un VCS. Las desventajas de git provienen de no poder aprovechar la experiencia previa y no poder hacer las cosas de la manera en que está acostumbrado.

Si va a cambiar de otra cosa a git, intente iniciar tabula-rasa (aunque es imposible hacerlo en la práctica). Evalúelo según lo que hace y lo bien que lo hace, no en cómo lo hace en comparación con cómo está acostumbrado a hacerlo. No es que espere demasiado, es que sus expectativas son ortogonales a lo que ofrece git. Si estás casado con la operación GUI, estarás decepcionado. Git tiene herramientas de gui disponibles, pero no agregan mucho. Eso no es un fracaso para proporcionarlos, ya que no hay mucho que un gui puede agregar. GitK ayuda, no en las operaciones del día a día, sino en visualizar la estructura de la rama y examinar o buscar el historial.

Aquí hay una analogía tonta para lo que quiero decir con "ortogonal". Una de las cosas que puede hacer con un periódico es envolver pescado en él, o usarlo para forrar una jaula de pájaros. Pero esas no son esenciales para la función de un periódico, son características incidentales del formulario en el que se incluye. Esperando que git "registre archivos", o "le permita seleccionar proyectos", o proporcionar un "conectar a ..." es algo así como esperar poder envolver peces o alinear su jaula de pájaros con el sitio web de un periódico.

    
respondido por el kylben 15.10.2011 - 15:56
7

¿Has considerado mercurial? Al igual que git, es un DCVS y te permite hacer todas las cosas interesantes que se pueden hacer con un DCVS. Como git, hay un proveedor de servicios bastante bueno, basado en la nube (bitbucket). Pero, a diferencia de Git, la historia de Windows es bastante decente, no eres un ciudadano de segunda clase. Tienes buenas opciones de herramientas (TortiseHG) y una integración bastante decente de Visual Studio (VisualHG).

Sin embargo, nada será como TFS en el estudio visual, el mundo simplemente no está conectado de esa manera.

    
respondido por el Wyatt Barnett 15.10.2011 - 17:28
6

Cambié de SVN a git hace un año, y estoy muy feliz por ello. Sin embargo, no confío en ninguna GUI y, en caso de que rechace rígidamente la línea de comandos, puede ser un problema.

Parece que esperas que git funcione de la manera en que estás acostumbrado, pero no lo hace. No es difícil, pero debe echar un vistazo a sus principios antes de continuar.

  

Crear un proyecto en Git y asignarlo a una carpeta en mi computadora portátil

Git está distribuido, lo que significa que siempre trabajas con tu repositorio local, que puede asignarse a cualquier número de controles remotos, incluido el cero. Al jugar con el proyecto de otros, estoy usando dos controles remotos: su git o repositorio SVN y mi propio servidor.

Siempre comienzo creando un directorio vacío y luego git init o git clone SOME-REMOTE-REPOSITORY . Este enlace podría ayudarlo.

  

Desproteger / registrar archivos y carpetas

Te perdiste de escribir qué GUI estás usando. Tanto TortoiseGit como git-gui seguramente lo pueden hacer.

  

Resolviendo conflictos

Para esto estoy usando git-gui o mi editor de texto favorito.

  

Espero que la GUI tenga una conexión con ... o algo por el estilo

¿Conectar a qué, cuando puede haber controles remotos de 0 a N? Git no se mantiene conectado a un servidor remoto, crea la conexión solo temporalmente y solo para los pocos comandos que trabajan con el repositorio remoto. La mayor parte del trabajo se realiza localmente.

  

luego espero que se muestre una lista de proyectos

Supongo que por projects te refieres a repositories .

Me temo que no hay tal cosa. Git en un servidor remoto funciona estrictamente con un solo repositorio. Enumerar todos los repositorios es equivalente a enumerar todos los directorios que contienen el subdirectorio .git . Estoy seguro de que hay algo como esto en GitHub .

  

Elijo uno, espero ver la lista de archivos y carpetas de ese proyecto, al igual que explorar

Nuevamente, me temo que no existe tal cosa, ya que git funciona localmente. Y de nuevo, no sería de mucha utilidad. Simplemente clone el repositorio y explore en su computadora. Si bien la clonación de repositorios enormes lleva algún tiempo, todas las operaciones subsiguientes son mucho más rápidas, y puede ver cualquier compromiso o rama.

  

Luego quiero poder hacer clic con el botón derecho en un archivo y seleccionar check-in ... o check-out y cosas por el estilo.

Nuevamente, git funciona localmente. Por lo tanto, no tiene sentido hacer check-in o check-out en un repositorio remoto. Trabajar de esta manera es una pérdida de tiempo incluso en una LAN rápida. Obtenga el repositorio en su computadora, trabaje con él y git push los cambios en el control remoto. Piense en ello como en publicar sus cambios y también hacer copias de seguridad. Debería cometer localmente muy a menudo .

Antes de comenzar su trabajo, git fetch o git pull los cambios desde el control remoto en caso de que alguien más haya estado trabajando con él.

  

¿Espero mucho?

Sí y no. Usted espera algo diferente de lo que ofrece. Puede obtener algo mucho mejor, git es poderoso, flexible, seguro, rápido como el infierno, y puede hacer todo lo que necesita, pero no puede imitar exactamente lo que VCS centralizado lo hace.

    
respondido por el maaartinus 15.10.2011 - 15:34
5

He hecho que el diario de fuente visual sea seguro a tfs a svn a git.

Pasar de vss a tfs fue una experiencia agradable. Pasar de tfs a svn fue una experiencia agradable. Pasar de svn a git ha sido una especie de batalla interna.

A menudo me encuentro bastante conservador y trato de aferrarme a lo que funciona. Una buena gui es preferible para mí a través de la línea de comandos y me encontré buscando una gui que me permitiera jugar con los niños geniales con los que trabajo. Todos utilizaron git con la línea de comando exclusivamente.

El momento de eureka para mí llegó una vez que abandoné la búsqueda de un gui con bala de plata y comencé a probar Git Bash (todavía estoy aprendiendo).

Tengo algunas guías instaladas y complementan git desde la línea de comandos. Extensiones Git, proveedor de control de fuente Git para visual studio y git tortuga. Pero te digo que te familiarices con git bash. Los comandos pueden ser un poco crípticos, pero una vez que los aprendes, son mucho más rápidos que los gui.

La ramificación con git es IMPRESIONANTE en comparación con las otras. Crea ramas y cambia de ramas casi instantáneamente. Puedes hacer cosas que no te molestaría hacer con svn porque svn básicamente copia tu copia de trabajo (al menos como lo hice).

Encuentro que Git tiene una curva de aprendizaje más pronunciada que svn. Pero una vez que lo "entiendes" con git no quieres volver.

Git todo el camino.

    
respondido por el tomasat 16.10.2011 - 01:20
5

Está acostumbrado a tener un servidor que almacena sus archivos y es el propietario omnipotente de ellos. Para editar un archivo, debe solicitar permiso al servidor.

Git no es así. Piensa en git de esta manera: tienes tu repositorio local. Git te permite realizar cambios, confirmaciones inversas, bifurcaciones fáciles y rápidas, etc. Cuando quiera hacer una copia de seguridad de su historial de control de fuente, presione sus cambios a otro repositorio, que "simplemente es" un servidor, como GitHub.com.

Flujo de trabajo:

  1. Clonar (Descargar) / Crear repositorio
  2. Haz algunos cambios. Continuar con el desarrollo sin preocuparse por los demás.
  3. Empuje a otro repositorio (podría ser un servidor como GitHub).
  4. Cuando empuja a un repositorio, se notifica al propietario del otro repositorio sobre el envío pendiente, y debe decidir si acepta esos compromisos, los rechaza o solo toma un subconjunto de ellos.
  5. El ciclo continúa.

Eso es todo.

    
respondido por el Yam Marcovic 16.10.2011 - 14:18
1

¿Qué quieres decir con "git gui"? Hay un billón de ellos, incluido un complemento para la integración de Visual Studio, si no recuerdo mal. Si una GUI no funciona para usted, intente algo más hasta que encuentre una que sí lo haga. Personalmente uso diferentes GUI para diferentes tareas (y el CLI para otros).

Sin embargo, git es más un marco de control de versiones que un sistema fijo. Aún tendrás que aprender algunos conceptos básicos para aprovechar al máximo.

    
respondido por el Karl Bielefeldt 15.10.2011 - 20:48
-2
  

¿Espero mucho?

  

¿Qué debo hacer para usar Git fácilmente como TFS?

Nada. Git está centrado en el CLI y no tiene ninguna interfaz buena (sé sobre TortoiseGit, que no es una respuesta no , en comparación con otras Tortugas *). Usted puede intentar usar SmartGit (tenga cuidado con Java)

    
respondido por el Lazy Badger 15.10.2011 - 15:35

Lea otras preguntas en las etiquetas

Comentarios Recientes

a la Guía de lanzamiento - 26 de marzo de 2018 En abril, se presenta Cheers on Open Source para promover el estado de la comunidad y fomentar el apoyo a los proyectos de código abierto.La historia de portada de Dyar en GitLab ... es compatible hoy! Discos de energía: ¿Cuándo los venderá? Unidad de texto: Una primera ... Generando CMake configuration.js ... con espacios de trabajo únicos y match_idw ... Cómo el autor administra los proyectos de Visual Studio One.TL; DR : Más de 500 páginas sobre CSS fundamentals.Archivos... Lee mas