UNIVERSISDAD MAYOR DE SAN SIMON
FACULTAD DE CIENCIAS Y TECNOLOGIA
INGENIERIA INFORMATICA
SISTEMAS DE
INFORMACION II
SOFTWARE DE CONTROL DE
VERSIONES
Integrante:
Zeballos Oquendo Wally Kevin
Docente:
Ing. Arratia Rodriguez Denis Roger
Que es el control de versiones?
El control de versiones es un sistema que ayuda a rastrear y gestionar los
cambios realizados en un archivo o conjunto de archivos. Utilizado
principalmente por ingenieros de software para hacer un seguimiento de las
modificaciones realizadas en el código fuente, el sistema de control de versiones
les permite analizar todos los cambios y revertirlos sin repercusiones si se
comete un error.
En otras palabras, el control de versiones permite a los desarrolladores trabajar
en proyectos simultáneamente. Les permite hacer tantos cambios como
necesiten sin infringir o retrasar el trabajo de sus colegas.
Que es GIT?
Git es un sistema de control de versiones distribuido, lo que significa que un
clon local del proyecto es un repositorio de control de versiones completo. Estos
repositorios locales plenamente funcionales permiten trabajar sin conexión o
de forma remota con facilidad. Los desarrolladores confirman su trabajo
localmente y, a continuación, sincronizan la copia del repositorio con la del
servidor. Este paradigma es distinto del control de versiones centralizado,
donde los clientes deben sincronizar el código con un servidor antes de crear
nuevas versiones.
Conceptos Fundamentales:
1. Repositorio: Es el lugar donde se almacena toda la información
relacionada con el proyecto, incluidos los archivos, el historial de
cambios y las ramas. Puede ser local en tu computadora o remoto en un
servidor.
2. Commit: Un commit es un conjunto de cambios que se guardan en el
repositorio. Cada commit tiene un mensaje descriptivo que resume los
cambios realizados.
3. Branch (rama): Una rama es una línea de desarrollo independiente que
se bifurca del flujo principal de trabajo (normalmente llamado master o
main). Se utilizan para desarrollar nuevas funcionalidades, arreglar
errores o experimentar sin afectar el flujo de trabajo principal.
4. Merge (fusionar): Fusionar es combinar los cambios de una rama con
otra. Se usa para integrar el trabajo realizado en ramas separadas de
vuelta al flujo principal de trabajo.
5. Pull Request (solicitud de extracción): Es una función que permite a los
desarrolladores solicitar que sus cambios se fusionen en el flujo principal
de trabajo. Otros desarrolladores pueden revisar los cambios, hacer
comentarios y aprobar la fusión.
6. Clonar: Clonar un repositorio significa copiarlo en tu máquina local. Te
permite trabajar en el proyecto sin afectar el repositorio original.
Comandos Básicos:
git init: Inicializa un nuevo repositorio Git en un directorio.
git clone [url]: Clona un repositorio remoto en tu máquina local.
git add [archivo]: Agrega cambios de un archivo al área de preparación.
git commit -m "Mensaje": Guarda los cambios en el repositorio con un
mensaje descriptivo.
git push: Envía los cambios locales al repositorio remoto.
git pull: Obtiene los cambios del repositorio remoto y los fusiona en tu
rama local.
git branch: Lista las ramas en el repositorio.
git merge [rama]: Fusiona una rama con la rama actual.
git checkout [rama]: Cambia a una rama específica.
Otros software de control de versión:
Subversion (SVN):
SVN es un sistema de control de versiones centralizado que sigue un modelo cliente-servidor.
Utiliza un único repositorio central para almacenar todos los archivos y versiones.
Repositorios más pesados.
Sin información sobre la hora de modificación de los archivos.
Mercurial:
Mercurial, igual que Git, es un sistema de control de versiones distribuido ideal para
usuarios poco experimentados o perfiles poco técnicos.
Intuitivo y sencillo de manejar, con una curva de aprendizaje mucho más corta.
Veloz, potente y ligero.
Manejo sólido de archivos de texto plano y, también, binarios.
No funciona bien con extensiones.
Presenta menos funcionalidades que Git.
Solo soporta complementos programados en Python.
Monotone:
Es una herramienta de control de versiones distribuida de código abierto
que puede integrarse en multitud de sistemas operativos.
Prima la integridad ante el rendimiento, emplea técnicas criptográficas
para rastrear las versiones y autenticaciones de archivos, puede importar
proyectos CVS y utiliza el protocolo netsync.
Excelente funcionamiento de la ramificación.
Buena documentación oficial.
Requiere poco mantenimiento.
Sencillo, con una curva de aprendizaje corta.
Interfaz gráfica intuitiva.
Problemas de rendimiento en algunas operaciones.
No permite hacer checkout ni commit detrás del proxy.