Git y GitHub son herramientas diferentes pero complementarias para el desarrollo de proyectos de programación o afines. Git es una herramienta computacional de control de versiones que es usada prácticamente por todo el mundo. GitHub puede ser descrito como la plataforma en linea para alojar proyectos de programación (i.e. código) mas popular. Sin embargo, esta definición es simplista: Github ofrece muchísimas otras herramientas para facilitar la colaboración y publicación de proyectos relacionados con la programación.
Un sistema de control de versiones rastrea el historial de cambios a medida que las personas y los equipos colaboran en proyectos juntos. A medida que el proyecto evoluciona los equipos pueden ejecutar pruebas, corregir errores y aportar código nuevo con la confianza de que cualquier versión se puede recuperar en cualquier momento.
Tomado de Bryan 2018
El control de versiones:
Git no necesita una conexión permanente a un repositorio central y permite el trabajo asincrónico de los colaboradores.
Git se desarrolló originalmente en el sistema operativo Linux. Por lo tanto, tiene sentido que sea mas fácil de configurar para ejecutarse en Linux. Puede instalar Git en Linux a través de la herramienta de administración de paquetes que viene con su distribución:
apt
sudo apt update
sudo apt install git-all
git version
git version
)Nota: git-scm es recomendado para descargar Git para windows. La ventaja de descargar Git desde git-scm es que usa la última versión de Git e incluye Git Bash.
La mayoría de las versiones de macOS tienen Git instalado. Sin embargo, si no tiene Git instalado, se puede instalar la última versión de Git utilizando uno de estos métodos:
git --version
en la terminal, sin aun no está
instalado se le brindará la opción de instalarloHomebrew es un administrador de paquetes para macOS. Si ya tiene Homebrew instalado, puede seguir los pasos para instalar Git:
brew install git
git --version
Git se usa típicamente desde una terminal (consola donde se corre código). En windows se recomienda usar la consola de gitbash. En los sistemas operativos basados en Unix (macOS y Linux) se puede usar directamente desde la terminal por defecto.
Git usa un nombre y una dirección de correo electrónico para identificar las confirmaciones (‘commits’) con un autor (i.e. rastrea qué persona está realizando qué cambios). Su identidad de Git no es la misma que su cuenta de GitHub (pronto abajo hablaremos de GitHub), aunque ambas deben usar la misma dirección de correo electrónico. Por lo general, solo necesita configurar su identidad de Git una vez por computadora.
Así se puede definir su nombre de usuario en Git:
… y así se puede definir el correo electrónico:
“Dirijase” a la carpeta donde quiere mantener el repositorio
(cd
) e inicie el repositorio local (git init
):
¨
git init
inicia un nuevo repositorio de Git y comienza a
rastrear un directorio existente. Agrega una sub-carpeta oculta dentro
del directorio existente que alberga la estructura de datos interna
necesaria para el control de versiones.
Cree un nuevo archivo. Puede ser un archivo de .R o un archivo
README.md que describa el nuevo repositorio (en este caso es solo un
ejemplo). Ahora podemos usar git status
para verificar el
estado actual del proyecto:
Nota: Git puede registrar cambios específicos dentro de un archivo cuando estos son archivos de texto (archivos no-binarios). Para archivos binarios solo el historial de versiones será rastreado.
Para comenzar a rastrear un nuevo archivo se debe usar el siguiente comando:
Tambien podemos hacerlo para todos los nuevos archivos así:
Cuando se ha empezado a rastrear un(os) archivo(s) se puede(n) confirmar los cambios en el historial de versiones del proyecto:
Un flujo de trabajo común es editar archivos en su proyecto,
agregar los archivos que desea guardar usando el comando
git add
y luego tomar cofirmar los cambios del archivo
usando el comando git commit
. Tambien podemos usar
git status
para verificar el estado del proyecto.
El siguiente código crea una nueva rama y la activa:
Ahora podemos hacer cambios en el proyecto sin afectar la rama principal. Una vez que se esta conforme con los cambios estos se pueden reintegrar a la rama principal:
… y borrar la rama alterna:
Comandos adicionales para monitorear el estado de proyecto en git
git log
: devuelve un historial de las confirmaciones
(“commits”)
git reflog
: permite visualizar los cambios (mas
recientes) como las adiciones, confirmaciones y los cambios de
rama
git diff
: permite visualizar los cambios específicos
en los archivos no-binarios (i.e. de texto)
git reset
: devuelve la rama principal a un estado
anterior
Utilice git --help
para ver una lista de otros
comandos útiles para rastrear/modificar historiales
GitHub es una plataforma para depositar código, hacer control de versiones y facilitar colaboraciones. Permite a los usuarios ordenar y guardar copias del código, así como colaborar en proyectos relacionados a programación de forma remota.
Primero se debe solicitar una adición:
Y luego de cerciorarse que no hay conflictos se pueden unir la rama paralela y la principal:
git clone
crea una copia local de un proyecto que ya
existe de forma remota
git clone
localmente:
# entrar a la carpeta
cd ./curso_reproducible
# inicie el repositorio en git
git init
# definir la direccion del repositorio
git remote add origin https://github.com/maRce10/curso_reproducible.git
git pull
actualiza la línea de desarrollo remota con
actualizaciones de su contraparte local## rastrear nuevos cambios
git add .
# confirmar cambios
git commit -m "cambio local x"
# enviar la primer solicitud a github
git pull origin master
# enviar subsiguientes cambios a github
git pull
git push
git push
actualiza la línea de desarrollo local con
actualizaciones de su contraparte remota# sincronizar cambios remotos la primera vez
git push origin master
# sincronizar cambios remotos
git push