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
 Imagen de Software Carpentry
Cambios en la misma parte pueden generar conflictos que se pueden resolver (merge y merge conflict).
 Imagen de Software Carpentry
 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 screenRespuesta: I like tomatoes, therefore I like ketchup

 Imagen: Data science dojo
 Imagen: Data science dojo

Introducción a la programación científica - Septiembre 2025