Definición
Git es un sistema de control de versiones creado por Linus Torvalds, el mismo que hizo el núcleo de linux. Ahora, a qué me refiero cuando digo que es un sistema de control de versiones? Me refiero a que git nos permite tener como un historial de todos los cambios que hemos hecho a nuestro código a lo largo del tiempo.
Para qué me sirve?
Git es muy útil cuando ya estás trabajando con varias personas en un mismo proyecto, o incluso si estás trabajando solo ya que puedes estar trabajando en varios flujos que no se deben de integrar al mismo tiempo en el proyecto, además de que puedes volver a un estado anterior si es que llegaste a romper el proyecto, esto lo podemos hacer gracias a los commits y branches/ramas. Cada desarrollador tiene una copia completea de cierto momento del proyecto, es decir, supon que llegas a un proyecto de frontend donde ya tienes la pantalla de login y un dashboard que te muestra ciertos datos, y te piden ahora agregar nuevos datos para mostrar en el dashboard, pero a su vez le piden a otro desarrollador modificar el estilo de esa misma sección, sin git se tendrían que estar compartiendo el código cada vez que se hacen cambios, pero con git basta de hacer un commit de tus cambios, subirlos al repositorio, y hacer como un “sync” posterior a eso para tener lo último y arreglar los conflictos si es que existen, ya que puede ser que más de un desarrollador se encuentre trabajando en el mismo archivo.
No confundir git con github / gitlab / bitbucket
Git es el cliente con el que vas a estar trabajando en tu computadora y hacer los commits, branchs y demás cosas (comandos que veremos en futuros posts), github, gitlab y bitbucket son plataformas a las cuales vas a subir y a la vez compartir el código con los demás desarrolladores, haz de cuenta que son como el google drive pero donde guardas código y puedes verlo solamente accediendo a tu cuenta.
Para qué otra cosa es útil git?
Ya en un entorno profesional, además de las ventajas que mencioné anteriormente, git forma parte (indirectamente) de un proceso llamado Continious integration y Continous delivery, donde la primer parte se encarga de hacer el empaquetado y testeo de tu aplicación, y lo segundo se encarga de llevar el proyecto a algo que se llama ambiente, donde ya puedes ver la aplicación funcionando sin que esté ejecutandose localmente en tu máquina.
Hay otras alternativas a git?
Hasta donde sé, hay dos alternativas que son mercurial y subversion, pero en la mayoría de las empresas se usa git, en todos los años que llevo trabajando nunca me ha tocado usar las otras dos herramientas o he escuchado de alguien que si las haya tenido que usar.