Aprenda los conceptos básicos de Git en menos de 10 minutos

Sí, el título es un cebo de clics. No hay forma de que pueda comprender los conceptos básicos de la tecnología git en solo 10 minutos. Pero puedes acercarte bastante en unos 25 minutos. Y ese es el propósito de este artículo.

Si desea comenzar a aprender sobre la tecnología Git, ha venido al lugar correcto. Esta es una guía completa para principiantes de Git. Hay muchos clientes para Git. La tecnología es la misma sin importar el cliente. Pero en esta guía usaremos GitHub para comprender Git.

¡Empecemos!

¿Qué es el control de versiones?

El control de versiones es un sistema que registra cambios en un archivo o conjunto de archivos a lo largo del tiempo para que pueda recuperar versiones específicas más adelante. Entonces, idealmente, podemos colocar cualquier archivo en la computadora en control de versiones.

Umm ... Está bien ... Pero ¿Por qué Tho?

Este es el por qué:

Un sistema de control de versiones (VCS) le permite revertir archivos a un estado anterior, revertir todo el proyecto a un estado anterior, revisar los cambios realizados a lo largo del tiempo, ver quién modificó por última vez algo que podría estar causando un problema, quién introdujo un problema y cuando, y mas. Usar un VCS también significa que si arruinas las cosas o pierdes archivos, generalmente puedes recuperarlos fácilmente. Y a veces solo quieres saber “quién escribió esta mierda” , y ¿vale la pena tener acceso a esa información ?.

Entonces, ¿qué es Git?

Git es un sistema de control de versiones para rastrear cambios en archivos de computadora y coordinar el trabajo en esos archivos entre varias personas. Git es un sistema de control de versiones distribuido . Por tanto, Git no depende necesariamente de un servidor central para almacenar todas las versiones de los archivos de un proyecto. En cambio, cada usuario "clona" una copia de un repositorio (una colección de archivos) y tiene el historial completo del proyecto en su propio disco duro. Este clon tiene todos los metadatos del original, mientras que el original en sí mismo se almacena en un servidor autohospedado o en un servicio de alojamiento de terceros como GitHub.

Git te ayuda a realizar un seguimiento de los cambios que realizas en tu código. Básicamente es la pestaña de historial de su editor de código (¿sin modo de incógnito?). Si en algún momento durante la codificación encuentra un error fatal y no sabe qué lo está causando, siempre puede volver al estado estable. Por eso es muy útil para depurar. O simplemente puede ver qué cambios realizó en su código a lo largo del tiempo.

En el ejemplo anterior, las tres tarjetas representan diferentes versiones del mismo archivo. Podemos seleccionar qué versión del archivo queremos usar en cualquier momento. Entonces puedo saltar de un lado a otro a cualquier versión del archivo en el continuo de tiempo de git.

Git también te ayuda a sincronizar código entre varias personas. Así que imagina que tú y tu amigo están colaborando en un proyecto. Ambos están trabajando en los mismos archivos de proyecto. Ahora Git toma esos cambios que tú y tu amigo hicieron de forma independiente y los fusiona en un único repositorio " Maestro ". Entonces, al usar Git, puede asegurarse de que ambos estén trabajando en la versión más reciente del repositorio. Por lo tanto, no tiene que preocuparse por enviar sus archivos entre sí y trabajar con una cantidad ridícula de copias del archivo original. ¿Y colaborar a larga distancia se vuelve tan fácil como HTML ?.

Flujo de trabajo de Git:

Antes de comenzar a trabajar con los comandos de Git, es necesario que comprenda lo que representa.

¿Qué es un repositorio?

Un repositorio, también conocido como repositorio, no es más que una colección de código fuente.

Hay cuatro elementos fundamentales en el flujo de trabajo de Git.

Directorio de trabajo , área de ensayo , repositorio local y repositorio remoto .

Si considera un archivo en su directorio de trabajo, puede estar en tres estados posibles.

  1. Se puede escenificar. Lo que significa que los archivos con los cambios actualizados están marcados para confirmarse en el repositorio local pero aún no se han confirmado.
  2. Puede modificarse . Lo que significa que los archivos con los cambios actualizados aún no se almacenan en el repositorio local.
  3. Se puede cometer . Lo que significa que los cambios que realizó en su archivo se almacenan de forma segura en el repositorio local.
  • git add es un comando que se usa para agregar un archivo que está en el directorio de trabajo al área de preparación.
  • git commit es un comando que se utiliza para agregar todos los archivos almacenados en el repositorio local.
  • git pushes un comando que se usa para agregar todos los archivos comprometidos en el repositorio local al repositorio remoto. Entonces, en el repositorio remoto, todos los archivos y cambios serán visibles para cualquier persona con acceso al repositorio remoto.
  • git fetch es un comando que se usa para llevar archivos del repositorio remoto al repositorio local pero no al directorio de trabajo.
  • git merge es un comando que se usa para llevar los archivos del repositorio local al directorio de trabajo.
  • git pullEs un comando que se usa para obtener archivos del repositorio remoto directamente en el directorio de trabajo. Es equivalente a una git fetchy una git merge.

Ahora que sabemos qué es Git y sus terminologías básicas, veamos cómo podemos colocar un archivo en git . Lo haremos de la manera correcta y de la manera difícil. Sin ninguna aplicación GUI.

Supongo que ya tiene un archivo que desea colocar bajo control de versiones. De lo contrario, cree una carpeta de muestra llamada 'MuskCult' y coloque algunos archivos de código de muestra en ella.

Paso 0: Crea una cuenta de GitHub. Duh.

Si aún no tiene uno, puede hacer uno aquí.

Paso 1: asegúrese de tener Git instalado en su máquina.

Si está en una Mac , encienda la terminal e ingrese el siguiente comando:

$ git --version

Esto le pedirá que abra un instalador si aún no tiene git. Así que configúralo usando el instalador. Si ya tiene git, solo le mostrará qué versión de git ha instalado.

Si está ejecutando Linux (deb), ingrese lo siguiente en la terminal:

$ sudo apt install git-all

Si está en Windows :

$ get a mac

Es broma ... Relájate ... La cantidad de personas que provoqué ... Uf ...

Vaya a este enlace o este enlace para obtener más información sobre cómo obtenerlo.

Paso 2: Dile a Git quién eres.

Presentarte. Deslice hacia adentro. En serio, mencione su nombre de usuario y dirección de correo electrónico de Git, ya que cada confirmación de Git usará esta información para identificarlo como el autor.

$ git config --global user.name "YOUR_USERNAME" 
$ git config --global user.email "[email protected]"
$ git config --global --list # To check the info you just provided

Paso 3: Genere / verifique su máquina para las claves SSH existentes. (Opcional)

¿Porque preguntas? Con el protocolo SSH , puede conectarse y autenticarse a servidores y servicios remotos . Con las claves SSH, puede conectarse a GitHub sin proporcionar su nombre de usuario o contraseña en cada visita.

Siga este enlace para obtener más información sobre SSH.

Ir aquipara comprobar si tiene una clave SSH existente.

Vaya aquí para generar una clave SSH.

Ir aquipara agregar la clave SSH a su cuenta de GitHub.

Y finalmente ve aquí para probar su conexión.

Si configuró SSH, cada comando git que tiene un enlace lo reemplaza por:

Instead of : //github.com/username/reponame
You use : [email protected]/username/reponame.git
 Note : You can use both ways alternatively

Usaré el protocolo SSH en este tutorial.

Paso 4: Vamos a Git

Crea un nuevo repositorio en GitHub. Siga este enlace.

Ahora, ubique la carpeta que desea colocar debajo de git en su terminal.

$ cd Desktop/MuskCult

Inicializar Git:

Y para colocarlo debajo de git, ingrese:

$ touch README.md # To create a README file for the repository$ git init # Initiates an empty git repository

Ahora edite el archivo README.md para proporcionar información sobre el repositorio.

Agregue archivos al Área de ensayo para confirmar:

Ahora para agregar los archivos al repositorio de git para confirmar:

$ git add . # Adds all the files in the local repository and stages them for commit
OR if you want to add a specific file
$ git add README.md # To add a specific file

Antes de confirmar, veamos qué archivos están almacenados:

$ git status # Lists all new or modified files to be committed

Confirme los cambios que realizó en su repositorio de Git:

Ahora, para confirmar los archivos que agregó a su repositorio de git:

$ git commit -m "First commit"# The message in the " " is given so that the other users can read the message and see what changes you made

Anule la confirmación de los cambios que acaba de realizar en su repositorio de Git:

Ahora suponga que acaba de cometer un error en su código o colocó un archivo no deseado dentro del repositorio, puede eliminar la etapa de los archivos que acaba de agregar usando:

$ git reset HEAD~1# Remove the most recent commit# Commit again!

Agregue un origen remoto y presione:

Ahora, cada vez que realice cambios en sus archivos y los guarde, no se actualizará automáticamente en GitHub. Todos los cambios que hicimos en el archivo se actualizan en el repositorio local. Ahora para actualizar los cambios al maestro:

$ git remote add origin remote_repository_URL# sets the new remote

El comando git remote te permite crear, ver y eliminar conexiones a otros repositorios.

$ git remote -v# List the remote connections you have to other repositories.

El comando git remote -v enumera las URL de las conexiones remotas que tiene a otros repositorios.

$ git push -u origin master # pushes changes to origin

Ahora, el comando git push empuja los cambios en su repositorio local hasta el repositorio remoto que especificó como origen.

Y ahora, si vamos y revisamos nuestra página de repositorio en GitHub, debería verse así:

Y eso es. Acaba de agregar los archivos al repositorio que acaba de crear en GitHub.

Vea los cambios que realizó en su archivo:

Una vez que comience a realizar cambios en sus archivos y los guarde, el archivo no coincidirá con la última versión que se comprometió con git. Para ver los cambios que acaba de realizar:

$ git diff # To show the files changes not yet staged

Vuelva a la última versión comprometida en Git Repo:

Ahora puede optar por volver a la última versión confirmada ingresando:

$ git checkout .
OR for a specific file
$ git checkout -- 

Ver historial de confirmaciones:

Puedes usar el comando git log para ver el historial de confirmaciones que hiciste con tus archivos:

$ git log

Cada vez que realiza cambios que desea que se reflejen en GitHub, los siguientes son los flujos de comandos más comunes:

$ git add .$ git status # Lists all new or modified files to be committed$ git commit -m "Second commit"$ git push -u origin master

Ahora, si vamos a ver nuestro repositorio, podemos identificar si la confirmación fue exitosa mirando el mensaje de confirmación de cada archivo.

Paso 5: Eso está muy bien ... Pero, ¿cómo descargo y trabajo en otros repositorios en GitHub?

Clonación de un repositorio de Git:

Busque el directorio en el que desea clonar el repositorio. Copie el enlace del repositorio que desee e ingrese lo siguiente:

$ git clone remote_repository_URL

Siéntase libre de seguir adelante y clonar el repositorio que creé anteriormente usando: //github.com/Gothamv/MuskCult

Inserción de cambios en el repositorio de Git:

Ahora puede trabajar en los archivos que desee y comprometerse con los cambios localmente. Si desea enviar cambios a ese repositorio, debe ser agregado como colaborador del repositorio o debe crear algo conocido como solicitud de extracción. Ve y mira cómo hacer uno aquí y dame una solicitud de extracción con tu archivo de código.

Colaborando:

Así que imagina que tú y tu amigo están colaborando en un proyecto. Ambos están trabajando en los mismos archivos de proyecto. Cada vez que realiza algunos cambios y los inserta en el repositorio principal, su amigo tiene que introducir los cambios que introdujo en el repositorio de git. Lo que significa que para asegurarse de que está trabajando en la última versión del repositorio git cada vez que comienza a trabajar, un comando git pull es el camino a seguir.

A continuación se muestra un ejemplo de un proyecto en el que colaboramos mi amigo y yo:

Entonces, para asegurarme de que esos cambios se reflejen en mi copia local del repositorio:

$ git pull origin master

Aquí hay dos comandos git más útiles:

$ git fetch AND$ git merge

En los términos más simples, git fetchseguido de a git merge es igual a a git pull. Pero entonces, ¿por qué existen?

Cuando lo usa git pull, Git intenta hacer su trabajo automáticamente por usted. Es sensible al contexto , por lo que Git fusionará todas las confirmaciones extraídas en la rama en la que está trabajando actualmente. git pullFusiona automáticamente las confirmaciones sin permitirle revisarlas primero .

Cuando usted git fetch, Git recopila las confirmaciones de la rama de destino que no existen en su rama actual y las almacena en su repositorio local . Sin embargo, no los fusiona con su rama actual . Esto es particularmente útil si necesita mantener su repositorio actualizado, pero está trabajando en algo que podría fallar si actualiza sus archivos. Para integrar las confirmaciones en su rama maestra, usa git merge.

Una cosa más:

.gitignore

¿Así que qué es lo?

.gitignorele dice a git qué archivos (o patrones) debe ignorar. Por lo general, se usa para evitar enviar archivos transitorios de su directorio de trabajo que no son útiles para otros colaboradores, como productos de compilación, archivos temporales que crean los IDE, etc.

Entonces, en el ejemplo anterior, el sistema usa archivos como __pycache__, .DS_Store para almacenar información para un acceso más rápido. Esto no es útil para otros colaboradores. Entonces podemos decirle a git que los ignore agregando un .gitignorearchivo.

Utilice el comando táctil para crear el .gitignorearchivo:

$ touch .gitignore

Y puede agregar los siguientes patrones para decirle a git que ignore dichos archivos.

/*.cmake/*.DS_Store/.user/buildetc. depending upon the files you want git to untrack

Y eso es todo por lo básico. Estén atentos a la Parte 2, que se centrará en Branch, Merge, Stash, Rebase, etc.

Si te gustó el artículo, no olvides presionar el botón Aplaudir y asegúrate de seguirme para la Parte 2.

Paz fuera ✌️

Referencias:

Agregar un proyecto existente a GitHub usando la línea de comando - Documentación del usuario

Poner su trabajo existente en GitHub puede permitirle compartir y colaborar de muchas maneras excelentes. Si está migrando su… help.github.com Cómo deshacer (casi) cualquier cosa con Git

Una de las características más útiles de cualquier sistema de control de versiones es la capacidad de "deshacer" sus errores. En Git, "deshacer" ... blog.github.com Git en la línea de comandos - No tenga miedo de enviar documentación 0.3

Hay otras formas de instalar Git; incluso puede obtener una aplicación gráfica de Git, que incluirá la línea de comandos… dont-be-afraid-to-commit.readthedocs.io Comience a usar Git en la línea de comandos | GitLab

Documentación para GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab y GitLab Runner. docs.gitlab.com ¿Cuál es la diferencia entre 'git pull' y 'git fetch'?

Nota del moderador: Dado que esta pregunta ya ha tenido sesenta y siete respuestas publicadas (algunas de ellas eliminadas)… stackoverflow.com