Material de la lección Version Control with Git de Software Carpentry
Imagen de Software Carpentry
Conjuntos de cambios nos pueden dar distintas versiones (Ej. ramas o branches)
Imagen de Software Carpentry
Cambios en la misma parte pueden generar conflictos que se pueden resolver (merge y merge conflict).
Imagen de Software Carpentry
Aspecto | Código del artículo (control de versiones: Git) | Manuscrito del artículo (control de cambios: Word) |
---|---|---|
Objetivo | Reproducir análisis/figuras con historial confiable | Pulir redacción, estructura y estilo del texto |
Formato típico | Texto simple (R/Python/Julia, Markdown, LaTeX) | DOCX o Google Docs con formato y figuras |
Unidad de cambios | Commits con mensajes (pequeños) | Sugerencias/comentarios sobre frases y párrafos |
Flujo de trabajo | Ramas para features/experimentos; pull requests | Revisión editorial; aceptar/rechazar sugerencias |
Incorporar cambios | Merges para mezclar trabajo paralelo; resolución de conflictos en archivos | Manual; se complica con muchos editores simultáneos |
Revertir | Volver a cualquier commit/etiqueta; revert selectivo | Restaurar versión del documento solo si salvamos |
Reproducibilidad | Alto: environment files, scripts y pipelines versionados | El texto describe métodos; no garantiza ejecución |
Responsabilidad | Quién cambió qué archivo/línea y por qué (mensaje) | Quién propuso qué edición textual y cuándo |
Mejor para | Experimentos, notebooks, scripts, plantillas LaTeX | Introducción, discusión, respuesta a revisores |
Entregables | Repo con README, instrucciones y environment | Manuscrito formateado según la revista |
Momento ideal de uso | Desde el inicio del proyecto hasta la aceptación | Borradores medios y finales |
$ git config --global user.name "Alfredo Linguini"
$ git config --global user.email "a.linguini@ratatouille.fr"
Editor de texto (hay muchas opciones)
$ git config --global core.editor "nano -w"
Nombre de la rama default
git config --global init.defaultBranch main
Sugerido Linux/Mac:
$ git config --global core.autocrlf input
Windows:
$ git config --global core.autocrlf true
Revisemos Configuración
git config --list --global
Imagen: Software Carpentry
Imagen: Software Carpentry
Haciendo Commit de Cambios a Git
¿Cuál de los siguientes comandos debería guardar los cambios de myfile.txt
a mi repositorio local Git?
git commit -m "my recent changes"
git init myfile.txt $ git commit -m "my recent changes"
git add myfile.txt $ git commit -m "my recent changes"
git commit -m myfile.txt "my recent changes"
Haciendo Commit a Multiples Archivos
El staging area puede tener cambios de cualquier número de archivos a los que quieras hacer commit, como una sola foto.
Agrega algún ingrediente a guacamole.md.
Crea un nuevo archivo guacamole_secreto.md con tus ideas para una nueva recea de guacamole.
Agrega los cambios de ambos archivos al staging area, y haz un commit de esos cambios.
Cuál es el output al final de los siguientes comandos?
$ cd recipes
$ echo "I like tomatoes, therefore I like ketchup" > ketchup.md
$ git add ketchup.md
$ echo "ketchup enhances pasta dishes" >> ketchup.md
$ git commit -m "My opinions about the red sauce"
$ git restore ketchup.md
$ cat ketchup.md # this will print the content of ketchup.md on screen
Respuesta: I like tomatoes, therefore I like ketchup
Imagen: Data science dojo
Introducción a la programación científica - Septiembre 2025