Tutorial avanzado de Git

La implementación de su proyecto a través de un repositorio remoto le permite administrar de manera flexible cada parte del mismo. Las correcciones de errores, las actualizaciones de funciones, la eliminación de archivos, el trabajo en equipo, las contribuciones de código abierto, la implementación de código y más están ahora al alcance de su mano con un sólido conocimiento de Git.

Entonces, ¿has estado usando Git pero quieres saber más? Aquí hay algunos consejos de Git más avanzados que harán que el control de la versión de su proyecto sea muy sencillo.

Rama de Git

Una rama de Git le impide empujar directamente a la rama maestra. Es útil si administra un proyecto con un equipo de desarrolladores. Puede crear tantas ramas de Git como desee y luego fusionarlas con la rama maestra más tarde.

Crear una rama de Git

Para crear una rama de Git, use:

 git branch branch_name

Cambiar a una rama de Git

Use checkout para cambiar a una rama de Git:

 git checkout branch_name

Después de cambiar a una rama, puede organizar sus cambios usando git add –all . Luego confírmelos usando el comando git commit -m "commit name" .

Comparar una rama con Master

Usa el comando git diff :

 git diff master..branch_name

Para comparar archivos específicos:

 git diff master..testb -- main.html

Comparar dos ramas es similar a cómo se compara una rama con la maestra:

 git diff branch1..branch2

Para ver las diferencias en un archivo específico entre dos ramas:

 git diff branch1..branch2 -- main.html

Enviar cambios a una sucursal remota

Es posible que desee que otro desarrollador observe los cambios que ha realizado en un archivo en su sucursal local antes de publicarlos en vivo. Una buena práctica es colocar tu sucursal local de Git en una réplica remota para que puedan echar un vistazo.

Supongamos que ha creado previamente una rama local llamada cambios . Puede cambiar a esa rama local, ajustar todos los archivos que desee, luego prepararlos y enviarlos a esa rama.

Luego puede enviar esos cambios a la versión remota de la rama:

 git push origin changes

Fusionar rama remota con maestro mediante solicitud de extracción

Entonces otro programador ha auditado los cambios en la rama remota ( cambios ). Pero desea fusionarlo con la rama maestra y publicarlo en vivo.

Recuerde que su rama remota hereda el nombre de su rama local de Git ( cambios ). A continuación, le mostramos cómo fusionar los cambios:

Cambie a la rama maestra:

 git checkout master

Extraiga el origen o HEAD de la rama ( cambios ) para fusionarlo con la rama maestra:

 git pull origin changes

Empuje esta fusión en vivo a la rama maestra:

 git push origin master

Utilice Git Merge en su lugar

Para fusionar una rama con el maestro usando el comando fusionar :

Migrar a la rama principal:

 git checkout master

Fusionarlo con la rama ( cambios ):

 git merge changes

Luego empuje la fusión en vivo a la rama maestra:

 git push origin master

Asegúrese de reemplazar los cambios con el nombre de su sucursal.

Una vez que la combinación se realiza correctamente, puede eliminar la rama de forma local y remota si ya no la necesita:

Relacionado: Cómo cambiar el nombre de una rama en Git

Git Rebase

Si tiene varias ramas con confirmaciones desactualizadas, puede reajustar o reenfocar el encabezado / referencias de esas ramas para heredar el encabezado / referencias de uno actualizado.

Rebasar, por lo tanto, es útil cuando necesita actualizar algunas ramas con la base de una actual.

Sin embargo, cambiar la base no debería ser una acción frecuente, especialmente si está trabajando con un equipo, ya que puede interrumpir todo el flujo de trabajo. Pero si trabaja solo y está familiarizado con su flujo de trabajo y ramas, el rebase no debería causar estragos si sabe dónde y cómo usarlo.

Por ejemplo, suponga que tiene dos ramas; branch1 y branch2. Ahora, no ha realizado ningún cambio en branch1 durante algún tiempo. Pero constantemente confirma cambios en branch2, incluso recientemente.

Entonces decidió llevar branch1 junto con el flujo. Por lo tanto, cambiar la base de branch1 a branch2 significa que le está diciendo a branch1 que ignore sus confirmaciones anteriores y herede la confirmación reciente realizada en branch2.

Así es como puede hacerlo:

Cambie a la rama abandonada (rama1):

 git checkout branch1

Luego, vuelva a establecer la base de branch1 en el branch2 actualizado:

 git rebase branch2

Git Squash

Git squash te permite fusionar múltiples confirmaciones en una. Ayuda cuando ejecutas git commit muchas veces en una sola actualización. Un ejemplo práctico es cuando cada corrección de error o refactorización de código para una sola característica tiene una confirmación separada.

Pero es posible que no desee presionar el compromiso HEAD con los que lo acompañan, ya que todos tienen el mismo propósito. Un enfoque recomendado es agruparlos en uno para evitar confusiones al realizar un seguimiento de las confirmaciones.

La mejor manera de aplastar las confirmaciones es a través del modo de rebase interactivo. Eche un vistazo al siguiente ejemplo para comprenderlo mejor.

En este ejemplo, suponga que tiene cinco correcciones de errores. Y hay un compromiso para cada uno de ellos. Así es como puedes combinar estas cinco confirmaciones en una:

Ejecute git reflog para ver el código hash de sus confirmaciones:

 git reflog

Aquí está el resultado en este caso:

Ahora su objetivo es aplastar las últimas cinco confirmaciones, comenzando con la primera corrección hasta la quinta .

Para hacer eso, copie el código hash de la confirmación justo debajo del primer arreglo ( 0a83962 ). Luego presione Q para salir del reflog .

Ahora ejecute git rebase –interactive en ese hash.

 git rebase --interactive 0a83962

Luego, Git abre un archivo de rebase interactivo que se ve así:

Para aplastar las confirmaciones, excluyendo la primera corrección , reemplace pick con s para cada una de las otras confirmaciones:

Guarde y cierre este archivo.

Luego se abre otro archivo para que cambie el nombre de la confirmación aplastada:

Límpielos y escriba un nombre preferido para la confirmación aplastada:

Guarde ese archivo. Luego ciérrelo y debería recibir un mensaje de éxito en su terminal.

Nota: el archivo interactivo puede abrirse dentro de la terminal. Pero si está en Windows, es posible que desee obligar a su terminal a abrir archivos globalmente en su editor de texto favorito para facilitar el aplastamiento.

Para hacer eso, abra su línea de comando y ejecute:

 git config --global core.editor "'path to choice text editor' -n -w"

Git Fork vs.Git Clone

La bifurcación y la clonación son dos términos diferentes en Git. No puedes bifurcar tu repositorio porque ya está ahí contigo. Sin embargo, puede bifurcar el repositorio de otras personas y clonarlo después.

Bifurcar un repositorio significa que estás tomando una copia del repositorio de alguien y lo estás haciendo tuyo. Una vez que obtenga una copia de ese repositorio, puede clonarlo como lo haría con cualquiera de sus repositorios de git para cambios locales.

A continuación, se explica cómo clonar un repositorio remoto en GitHub e iniciar una descarga en su directorio local:

 git clone https://github.com/username/repository_name.git/

Restaurar un archivo a su estado predeterminado

Si desea borrar los cambios en un archivo después de la última confirmación, puede usar el comando git restore :

 git restore filename

Modificar un compromiso

Puede volver a una confirmación anterior si olvida realizar cambios en algunos archivos mientras los prepara.

Realice cambios en el archivo que olvidó. Luego use git modificar para revisar una confirmación:

 git add file_forgotten
git commit --amend

Archivos sin etapa

Puede eliminar archivos específicos que ha preparado para una confirmación usando el comando git rm :

 git rm --cached filename

También puede eliminar varios archivos a la vez:

 git rm --cached file1 file2 file3 file4

Recuerde agregar la extensión de archivo relevante a cualquier archivo que esté eximiendo. Por ejemplo, un archivo de texto sin formato debe ser filename.txt .

Relacionado Cómo limpiar Git y eliminar archivos sin seguimiento

Restablecimiento de Git

Usar git reset es útil si desea eliminar todos los archivos que ha preparado para una confirmación a la vez:

 git reset

Git reset HEAD, sin embargo, apunta el HEAD de una rama a una confirmación específica en su árbol de trabajo. Por ejemplo, si aún no ha enviado su compromiso actual, puede volver al compromiso enviado recientemente:

 git reset --soft HEAD~1

Reemplace –soft con –hard si ya ha enviado la confirmación actual:

 git reset --hard HEAD~1

Git Revert

A diferencia del comando reset , git revert mantiene la integridad de su historial de confirmaciones. Es útil si desea modificar una confirmación debido a errores o errores.

No abandona el compromiso de destino ni crea uno nuevo. En cambio, vuelve a los cambios recientes que realizó sin eliminar o cambiar el nombre de dicha confirmación. Es una excelente manera de mantener sus confirmaciones más limpias, además de que es más seguro que reiniciar todo el tiempo.

Para volver a una confirmación:

 git revert HEAD~1

Donde HEAD ~ 1 apunta a una confirmación específica en su árbol de trabajo.

Eliminar un archivo o directorio con seguimiento

Puede usar git rm -f para eliminar cualquier archivo rastreado en su árbol de trabajo. Sin embargo, tenga en cuenta que Git no puede eliminar archivos sin seguimiento, ya que no los almacena en caché.

Para eliminar un archivo provisional:

 git rm -f filename

Para eliminar una carpeta provisional:

 git rm -r -f foldername

Registro de Git

Para ver sus registros e historial de confirmaciones en Git:

 git log

Para registrar las actividades en una rama específica:

 git log branch_name

Relacionado: Cómo inspeccionar el historial de un proyecto con git log

A veces, es posible que desee volver a una confirmación abandonada. Entonces, para ver las confirmaciones abandonadas, incluidas las relevantes:

 git reflog

Para ver los registros de referencia de una rama en particular:

 git reflog branch_name

Administre las versiones de su proyecto como un profesional con Git

Con Git que ofrece muchas ventajas, puede administrar las versiones de su proyecto de forma remota sin robar archivos y carpetas en las instalaciones de su sucursal principal. Además, le permite ejecutar proyectos fácilmente con un equipo.

Como has visto, Git tiene muchas características que puedes explorar. Pero tenga cuidado de utilizar estas funciones a propósito. De lo contrario, podrías terminar rompiendo cosas. Dicho esto, aún puede crear un repositorio remoto de demostración y jugar con estas características.