Un confuso lío de ramas. Foto de .
Git es una herramienta poderosa, pero tiene la reputación de desconcertar a los recién llegados. No ayuda que la mayoría de las personas simplemente sean arrojadas al fondo y se espere que naden. Con el conocimiento adecuado, cualquiera puede dominar git. Una vez que empieces a entenderlo, la terminología tendrá más sentido y (eventualmente) aprenderás a amarlo. Mantente fuerte 🙏
→ Entendiendo Git (parte 1) — Explícalo como si fuera cinco Entendiendo Git (parte 2) — Contribuyendo a un equipo Entendiendo Git (parte 3) — Resolviendo conflictos (¡estén atentos!)
En primer lugar, GitHub no es git. Mucha gente comprensiblemente confunde los dos. es un sitio web para albergar proyectos que usan git.
Git es un tipo de sistema de control de versiones (VCS) que facilita el seguimiento de los cambios en los archivos. Por ejemplo, cuando editas un archivo, git puede ayudarte a determinar exactamente qué cambió, quién lo cambió y por qué .
Es útil para coordinar el trabajo entre varias personas en un proyecto y para realizar un seguimiento del progreso a lo largo del tiempo al guardar "puntos de control". Puede usarlo mientras escribe un ensayo o para realizar un seguimiento de los cambios en las ilustraciones y los archivos de diseño. Git no es el único sistema de control de versiones que existe, pero es, con mucho, el más popular. Muchos desarrolladores de software usan git a diario, y entender cómo usarlo puede darle un gran impulso a su currículum. En proyectos complejos, donde varias personas pueden realizar cambios en los mismos archivos simultáneamente, es fácil entrar en un estado extraño. Cualquiera que haya lidiado con "conflictos de combinación" y esos símbolos desconcertantes >>>>>>> ======= <<<<<<<
pueden atestiguar esto.
ℹ️ Usas la interfaz de línea de comandos escribiendo en una terminal . Si no está familiarizado con las terminales, está bien; intente primero (o busque ayuda en Google).
iniciar gitInicie su propio repositorio desde cero (en cualquier carpeta existente en su computadora):
Esto creará una carpeta .git
oculta dentro de su carpeta actual: este es el "repositorio" (o repositorio ) donde git almacena todos sus datos de seguimiento internos. Ahora será posible realizar un seguimiento de cualquier cambio que realice en cualquier archivo dentro de la carpeta original.
✨ La carpeta original ahora se conoce como su directorio de trabajo , a diferencia del repositorio (la carpeta .git
) que rastrea sus cambios. Trabajas en el directorio de trabajo. ¡Simple!
clon de gitClonar un repositorio existente:
Esto descargará un repositorio .git
de Internet (GitHub) a su computadora y extraerá la última instantánea del repositorio (todos los archivos) a su directorio de trabajo. De forma predeterminada, todo se guardará en una carpeta con el mismo nombre que el repositorio (en este caso emoji-commit-messages
).
✨ La URL que especifica aquí se denomina origen remoto (el lugar desde donde se descargaron los archivos _origin_ally). Este término se utilizará más adelante.
estado de Git Esto imprimirá información básica, como qué archivos se han modificado recientemente. Debe verificar su estado cada vez que esté confundido. Git imprimirá información adicional según lo que esté sucediendo actualmente para ayudarte.Ver el estado actual de su proyecto:
rama git <nuevo-nombre-de-la-rama>Cree un nuevo nombre de sucursal :
Puede pensar en esto como crear un "punto de control" local (técnicamente llamado referencia ) y darle un nombre. Es similar a hacer Archivo > Guardar como… en un editor de texto; la nueva rama que se crea es una referencia al estado actual de su repositorio. El nombre de la rama se puede usar en varios otros comandos, como verá pronto.
De manera similar a la bifurcación, más comúnmente guardará cada punto de control a medida que avanza en forma de confirmaciones (vea git commit
a continuación más adelante).
Las confirmaciones son un tipo particular de punto de control llamado . El nombre será un hash de números y letras de aspecto aleatorio, como e093542
. Este hash se puede usar en varios otros comandos, al igual que los nombres de las sucursales.
✨ Esa es realmente la función central de git: guardar puntos de control (revisiones) y compartirlos con otras personas. Todo gira en torno a este concepto.
Si alguna vez ha creado un punto de control para algo, podrá volver a él más tarde siempre que su carpeta .git
esté intacta. Es mágico. Consulte [git reflog](//git-scm.com/docs/git-reflog)
si está interesado en obtener más información.
git checkout <nombre-de-sucursal-existente> Puede pensar en esto como "reanudar" desde un punto de control existente. Todos sus archivos se restablecerán al estado en el que se encontraban en esa rama en particular.Echa un vistazo a una sucursal en particular:
⚠️ Tenga en cuenta que cualquier cambio en su directorio de trabajo se mantendrá. Consulte [git stash](//git-scm.com/docs/git-stash)
si está interesado en una forma sencilla de evitar dolores de cabeza.
😎 Puede usar el indicador -b
como acceso directo para crear una nueva rama y luego comprobarlo todo en un solo paso. Esto es bastante común:
git diff <nombre-de-sucursal> <nombre-de-otra-sucursal>Ver las diferencias entre los puntos de control:
Después de editar algunos archivos, simplemente puede escribir git diff
para ver una lista de los cambios que ha realizado. Esta es una buena manera de verificar dos veces su trabajo antes de confirmarlo.
Para cada grupo de cambios, verá el aspecto que solía tener el archivo (con el prefijo -
y de color rojo), seguido de cómo se ve ahora (con el prefijo +
y de color verde).
git agregar <archivos> Después de editar algunos archivos, este comando marcará cualquier cambio que haya realizado como "preparado" (o "listo para confirmar").Organice sus cambios para prepararse para confirmarlos:
⚠️ Si luego va y realiza más cambios, esos nuevos cambios no se organizarán automáticamente, incluso si ha cambiado los mismos archivos que antes. Esto es útil para controlar exactamente lo que comete, pero también es una gran fuente de confusión para los recién llegados.
Si alguna vez no está seguro, simplemente escriba git status
nuevamente para ver qué está pasando. Verá "Cambios por confirmar:" seguido de los nombres de los archivos en verde. Debajo verá "Cambios no preparados para la confirmación:" seguido de los nombres de los archivos en rojo. Estos aún no están escenificados.
😎 Como atajo, puede usar comodines como con cualquier otro comando de terminal. Por ejemplo:
git agregar README.md app/*.txt Esto agregará el archivo README.md
, así como todos los archivos en la carpeta de la app
que terminen en .txt
. Por lo general, solo puede escribir git add --all
para agregar todo lo que ha cambiado.
git cometerConfirme sus cambios por etapas:
Esto abrirá su editor de texto de línea de comandos predeterminado y le pedirá que escriba un mensaje de confirmación . Tan pronto como guarde y salga, su confirmación se guardará localmente.
El mensaje de confirmación es importante para ayudar a otras personas a comprender qué se cambió y por qué lo cambió. Hay una breve guía que explica cómo escribir mensajes de confirmación útiles. 😎 Puede usar la marca -m
como acceso directo para escribir un mensaje. Por ejemplo:
git push origin <nombre-de-sucursal>Empuje su rama para cargarlo en otro lugar:
Esto cargará su sucursal en el remoto llamado **origin**
(recuerde, esa es la URL definida inicialmente durante la clone
).
Después de un push
exitoso, sus compañeros de equipo podrán pull
su rama para ver sus confirmaciones (consulte git pull
continuación).
😎 Como atajo, puede escribir la palabra HEAD
en lugar de branch-name
para usar automáticamente la rama en la que se encuentra actualmente. HEAD
siempre se refiere a su último punto de control, es decir, la última confirmación en su rama actual.
HEAD
<branch-name>
, por ejemplo, master
<commit-hash>
, por ejemplo, e093542d01d11c917c316bfaffd6c4e5633aba58
(o e093542
para abreviar)<tag-name>
, por ejemplo, v1.0.0
stash
Finalmente, los caracteres especiales como ^
, ~
y @{}
se pueden usar para modificar las referencias. Son bastante útiles; Obtenga más información .
buscarObtener la información más reciente sobre un repositorio:
Esto descargará la información más reciente sobre el repositorio desde el origin
(como todas las diferentes sucursales almacenadas en GitHub).
No cambia ninguno de sus archivos locales, solo actualiza los datos de seguimiento almacenados en la carpeta .git
.
git merge <otro-nombre-de-la-rama>Fusionar cambios de otra persona:
Esto tomará todas las confirmaciones que existen en la other-branch-name
y las integrará en su propia rama actual.
⚠️ Esto utiliza cualquier dato de rama almacenado localmente, así que asegúrese de haber ejecutado git fetch
primero para descargar la información más reciente.
Por ejemplo, si alguien más agrega algunas confirmaciones a la rama master
de origin
, puede hacer lo siguiente para descargar sus cambios y actualizar su propia rama master
local:
✨ El nombre origin/master
aquí literalmente significa el punto de control de origin/master
en su computadora. Git usa esta notación para diferenciar ramas del mismo nombre (p. ej., master
) ubicadas en diferentes lugares (p. ej., sus propias sucursales frente a las sucursales de origin
).
😎 Como atajo, puede usar el comando de extracción para buscar y fusionar todo en un solo paso. Esto es más común que fusionar manualmente como arriba:
maestro de origen git pull Aquí separamos las palabras origin
y master
(sin una barra como arriba). No queremos usar el punto de control de origin/master
en nuestra propia computadora, porque está almacenado sin conexión y probablemente esté desactualizado. En su lugar, queremos buscar directamente desde la rama master
del punto final remoto llamado origin
. Estar atento; la diferencia es importante!
Para una comprensión más profunda de cómo funciona la fusión y cómo se resuelven los conflictos (con imágenes y gráficos divertidos), consulte los . Esto también se cubrirá extensamente en la parte 3 de esta serie.
Si encuentra esto útil, ayúdenos tocando el botón 👏 tantas veces como desee para que otros también puedan encontrarlo.
Gracias, y estén atentos a la segunda parte . Déjame saber en los comentarios si hay algún tema específico que te interese.