git es un sistema de control de versiones, te ayuda a tener todo cambio bien registrado y archivado 📝
Para poder instalarlo en windows tenemos varias opciones
-
Instalarlo de la pagina oficial: ir a git ⤤
-
Utilizar un manejador de paquetes 📦 que lo instale por ti.
- Un manejador conocido para esta tarea es Scoop ⤤, que funciona por consola 💻. Para instalarlo debes utilizar los siguientes comandos en Powershell (la consola de windows):
- Permite programas de terceros 🙋 en tu ambiente
$ Set-ExecutionPolicy RemoteSigned -scope CurrentUser
- Instala Scoop
$ iwr -useb get.scoop.sh | iex
- Reinicia tus variables de entorno cerrando la consola actual ✖️ y abriendo una nueva.
- Permite programas de terceros 🙋 en tu ambiente
- Pidele a Scoop que instale git ⤤ por ti 🚤 :
$ scoop install git
- Un manejador conocido para esta tarea es Scoop ⤤, que funciona por consola 💻. Para instalarlo debes utilizar los siguientes comandos en Powershell (la consola de windows):
Es linux ya sabe como ayudarte ✨
- Actualiza tus repositorios de paquetes:
$ sudo apt-get update
- Pídele a linux que instale git ⤤
$ sudo apt-get install git-all
Fuente GitHub
Esta herramienta es muy util cuando tienes un repositorio de template 👥 y quieres conservar el trabajo de los demas 👷 en tu historia del repositorio. En especial cuando migras repositorios de servicios de git
diferentes 🤯 (github no es el unico)
- Crea una copia del trabajo que necesitas para construir tu imperio:
$ git clone --bare https://github.com/exampleuser/old-repository.git
-
Nota: siempre puedes copiar un repositorio local ya clonado, cambiando la url por un lugar en tu disco duro 📲
-
- Muévete a el repositorio a duplicar 📁
$ cd old-repository.git
- Fijate como este directorio terminas con
.git
, es toda la historia de ese repositorio 🙀
- Fijate como este directorio terminas con
- Mueve el repositorio antiguo a su destino 🚚
$ git push --mirror https://github.com/exampleuser/new-repository.git
- ❗❗ Recuerda que el destino podría ser tu pc
⚠️ Esto sobreescribira el repositorio de destino
Fuente: Stack Overflow
Esta herramienta te permite juntar varios repositorios en uno solo sin perder los cambios que con tanto esfuerzo 🏗️ se mantienen en el control de versiones.
El funcionamiento básico de esta operación es obligar a git
a juntar historias sin relación alguna 🔛. Por lo cual debes asegurarte que los archivos no se repitan en las ubicaciones claves
Primero debemos tener dos o más repositorios que queremos juntar en un solo, a diferencia del caso anterior no queremos perder los datos de los contribuidores de los repositorios.
my-app/
├─ src/
│ ├─ index.css
│ ├─ index.js
├─ .gitignore '@juanito: "docs: ignore macos garbage"'
├─ package.json '@esteban: "build: remove old dependencies"'
├─ README.md
awesome-latex-template/
├─ src/
│ ├─ main.tex '@agustín: "build: update template to lua latex"'
├─ .gitignore
├─ README.md '@gabriel: "docs: add very important emojis"'
Si usáramos una copia común pasaría lo siguiente con nuestro nuevo repositorio 🔥
my-app/
├─ src/
│ ├─ index.css
│ ├─ index.js
├─ .gitignore '@juanito: "docs: ignore macos garbage"'
├─ package.json '@esteban: "build: remove old dependencies"'
├─awesome-latex-template/
│ ├─ src/
│ │ ├─ main.tex '@juanito: "fix: fail to revert to normal latex :c, i dont know how"'
│ ├─ .gitignore
│ ├─ README.md '@juanito: "copy template with standard boring commit"'
├─ README.md
Primero debemos dejar en el repositorio de origen
todo arreglado 🧹 para mudar a nuestros archivos al destino
. Lo mas recomendable es dejar previamente todo en un directorio en la posición que quieres para el futuro.
awesome-latex-template/
├─ templates/
│ ├─awesome-latex-template
│ │ ├─ src/
│ │ │ ├─ main.tex '@agustín: "build: update template to lua latex"'
│ │ ├─ .gitignore
│ │ ├─ README.md '@gabriel: "docs: add very important emojis"'
En el ejemplo de arriba se dejan todos los archivos que estaban en root awesome-latex-template/
del repositorio en un sub-directorio en la carpeta awesome-latex-template/templates/awesome-latex-template/
Luego debes realizar un commit de que moviste los archivos a un nuevo directorio
- Primero los agregas al area de staging con
$ git add templates/
- Luego indicas tus cambios 📝
$ git commit -m "style: move awesome-latex-template code to template folder"
- Finalmente enviás tus cambios 🚚
$ git push
Con esto obtendrás un directorio de origen
listo para combinar
- Primero debes dirigirte al repositorio de
destino
con$ cd awesome-latex-template
- Crea una rama que reciba los cambios
$ git checkout new-template
- Agregamos nuestro repositorio de
origen
con el comando$ git remote add template-origin https://github.com/exampleuser/new-repository.git
- Dentro del repositorio descargamos toda información del repositorio 🌎 usando
$ git fetch template-origin
- Combinamos nuestro trabajo con
git merge template-origin/<branch> --allow-unrelated-histories
- Idealmente
<branch>
va a sermain
pero podría ser cualquier rama. --allow-unrelated-histories
es el que nos permite mezclar estas dos ramas, por eso hay que preparar elorigen
con anterioridad.
- Idealmente
- Si queremos eliminar toda referencia al otro repositorio lo eliminamos
git remote rm template-origin
Creado por @FarDust (Gabriel Faundez)