"Hoy les hablaré sobre los dos programas de control de versiones más populares: SVN y Git".

"SVN funciona aproximadamente como lo describí en la última lección. Git es un poco más complicado y planeo discutirlo con más detalle".

"¿Puede darme enlaces a la documentación para SVN y Git?"

"Por supuesto, sólo un segundo".

http://svnbook.red-bean.com/en/1.7/svn-book.html

https://githowto.com  (esto es simplemente una obra maestra)

"Entonces, Git ".

"Es un poco más complicado que SVN.  Con Git, cada usuario tiene su propio repositorio local además del repositorio del servidor " .

"Entonces, ¿a dónde te comprometes?"

"Los usuarios siempre se comprometen con su repositorio local".

"Pero, ¿qué pasa con el repositorio del servidor?"

"Para sincronizar los repositorios local y del servidor, existen comandos especiales de extracción y inserción .

"Hay una razón para esto. A veces, un programador necesita hacer mucho trabajo por su cuenta, lo que puede implicar varios cientos de confirmaciones antes de que pueda agregarse al repositorio compartido".

"Para hacer esto en SVN, tendría que iniciar una rama separada y luego fusionarla con el tronco".

"Con Git, simplemente siempre se compromete con el repositorio local y luego envía todos los cambios como un lote al repositorio central en el servidor cuando haya terminado".

"Este método puede parecer un poco excesivo cuando solo está escribiendo un pequeño código. Pero cuando sus tareas son tan grandes que se extienden durante semanas, entonces comprende que no puede simplemente escribir todo el tiempo sin comprometerse".

"¿Por qué no puedes simplemente trabajar durante dos semanas y luego enviar los cambios al servidor una vez?"

"Bueno, un programa de control de versiones ofrece muchas comodidades".

"Imagínese que se compromete todos los días y el día 10 descubre que los cambios que realizó en los últimos dos días no funcionarán según lo planeado. Y quiere volver al código que tenía el día 8 y abordar la tarea diferentemente."

"Simplemente revierte los cambios realizados en el repositorio local en los últimos dos días y vuelve al estado deseado. Esto se conoce como operación de reversión ".

"¿Me estás diciendo que puedes hacer eso?"

"Sí. Además, debido a que el historial de confirmaciones se almacena, puede averiguar cuándo y por qué se confirmó algo y quién lo hizo, las características/errores relevantes y qué diez archivos se modificaron simultáneamente como parte de este trabajo".

"Supongamos que la corrección de errores de alguien rompe el código de otra persona. Puede revertir ( retroceder ) el código y continuar como si el cambio nunca hubiera ocurrido".

"Está bien, está bien. Estoy convencido. ¿Podría mostrarme un par de ejemplos que ilustren cómo funciona todo esto?"

"Seguro."

"Así es como se clona el repositorio central en su computadora local:"

Confirmaciones y ramas - 1

"Por lo tanto, la operación de pago ya no es necesaria".

"Sí. Y aquí hay ejemplos de operaciones Push :"

Confirmaciones y ramas - 2

"Y operaciones de extracción :

Confirmaciones y ramas - 3

"Ah. Eso más o menos tiene sentido".

"Por cierto, hay un servicio genial llamado GitHub".

"Cualquier programador puede registrarse allí y crear sus propios repositorios Git. Le sugiero que se familiarice más con él".

"Aquí hay algunos enlaces útiles:"

https://githowto.com

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://articles.assembla.com/using-git/getting-started/set-up-git-on-windows-with-tortoisegit

"Tenga en cuenta que hay bastantes clientes de Git".

"Primero, está   GitBash , que te permite ingresar comandos de texto".

"Luego está TortoiseGit , que es un buen programa integrado en el Explorador de Windows. Te permite trabajar con archivos en un repositorio de Git directamente en el Explorador".

"IntelliJ IDEA es compatible con Git y le permite ejecutar todo tipo de comandos complejos con solo un par de clics directamente desde el entorno".

"Entonces, ¿cuál debo aprender?"

"Te recomiendo que los conozcas a todos".

"Pasarás tu entrevista y llegarás al trabajo. Obtendrás un enlace a Git, un nombre de usuario y una contraseña, y eso es todo. Luego estarás solo".

"¿Qué quieres decir con «por tu cuenta»?"

"Quiero decir que configurará Git usted mismo, sacará una copia del repositorio usted mismo..."

"Y luego tendrás que construir e intentar ejecutar el proyecto".

"Lo más probable es que las instrucciones de compilación también estén en el repositorio de Git, junto con la documentación del proyecto".

"El líder de tu equipo se te acercará por la noche y te dirá:  'Bueno, ¿qué has descubierto hasta ahora?' "

"Y dirás: 'Estoy tratando de configurar Git aquí, pero aún no he tenido ningún éxito. No me vas a despedir, ¿verdad?' "

"O, mientras todavía es mediodía, puede dirigirse al líder del equipo y decirle:  "Instalé Git, saqué el proyecto y examiné la documentación, pero hay cientos de archivos y aún no lo he solucionado todo". son las instrucciones de compilación actuales?'» "

"¿Puedes sentir la diferencia?"

"Sí. En el segundo caso, soy un programador superestrella del rock, pero en el primero, soy un tonto robótico que ni siquiera sabe cómo sacar un proyecto de Git. En otras palabras, metí la pata. hasta antes de que empezara a programar. Supongo que después de eso ni siquiera me dejarían escribir código".

"Mira, respondiste tus propias preguntas. Así que estudia y averígualo. Nadie lo hará por ti".

"¿No vas a ayudarme?"

"Ya he ayudado. Estamos enseñando Java aquí, en caso de que lo hayas olvidado. Para todo lo demás, estás solo. ¿O tu cabeza es solo para beber?"

"Está bien, lo entiendo. ¡Gracias, Bilaabo!"