Git es un sistema de control de versiones distribuido gratuito y de código abierto diseñado para manejar todo, desde proyectos pequeños hasta proyectos muy grandes, con rapidez y eficiencia.
Git se basa en el desarrollo distribuido de software donde más de un desarrollador puede tener acceso al código fuente de una aplicación específica y puede modificar los cambios que pueden ver otros desarrolladores. Permite al usuario tener «versiones» de un proyecto, que muestran los cambios que se realizaron en el código a lo largo del tiempo, y permite al usuario retroceder si es necesario y deshacer esos cambios.
Los repositorios en GIT contienen una colección de archivos de varias versiones diferentes de un Proyecto. Estos archivos se importan desde el repositorio al servidor local del usuario para futuras actualizaciones y modificaciones en el contenido del archivo. Se utiliza un VCS o el Sistema de control de versiones para crear estas versiones y almacenarlas en un lugar específico denominado repositorio.
Los repositorios en Git son de dos tipos:
- Repositorio local: Git permite a los usuarios realizar trabajos en un proyecto de todo el mundo debido a su función distributiva. Esto se puede hacer clonando el contenido del repositorio central almacenado en GitHub en la máquina local del usuario. Esta copia local se utiliza para realizar operaciones y probarlas en la máquina local antes de agregarlas al repositorio central.
- Repositorio remoto: Git permite a los usuarios sincronizar su copia del repositorio local con otros repositorios presentes en Internet. Esto se puede hacer para evitar que varios desarrolladores realicen una operación similar. Cada repositorio en Git puede ser direccionado por un atajo llamado remoto .
Git proporciona herramientas para realizar trabajos en estos repositorios de acuerdo con las necesidades del usuario. Este flujo de trabajo de realizar modificaciones a un Repositorio se conoce como el Árbol de Trabajo .
Repositorios desnudos: un repositorio desnudo es un repositorio remoto que puede interactuar con otros repositorios pero no se realiza ninguna operación en este repositorio. No hay un árbol de trabajo para este repositorio debido a lo mismo. Se puede crear un repositorio simple en Git en la máquina local del usuario con el uso del siguiente comando:
$ git init --bare
Un repositorio básico siempre se crea con una extensión .git. Esto se usa para almacenar todos los cambios, confirmaciones, referencias, etc. que se están realizando en el repositorio. Suele ser un directorio oculto.
Un repositorio de Git también se puede convertir en un repositorio simple, pero ese es más un proceso manual. Git no proporciona oficialmente el soporte para hacer lo mismo. Pero uno puede convertirlo fácilmente en un repositorio simple moviendo el contenido de la carpeta .git a la carpeta raíz y eliminando todos los demás archivos del árbol de trabajo actual del repositorio.
Además, el repositorio de Git debe actualizarse con el siguiente comando:
$ git config core.bare true
Siempre se recomienda clonar un repositorio antes de realizar tal operación.
¿Cómo clonar un repositorio de Git?
Git permite a sus usuarios realizar trabajos en un solo proyecto para más de una máquina local al mismo tiempo. Esto se puede hacer descargando una copia del repositorio en la máquina local y actualizándolo con el servidor central después de que se hayan realizado las modificaciones y esté listo para moverse. Este proceso de clonación se puede realizar mediante el uso de un comando git predefinido
$ git clone
Esto creará una copia exacta del repositorio Git existente con un historial completo de todos los repositorios previamente clonados. Los usuarios pueden realizar cualquier acción en la copia local del repositorio y pueden descartar esos cambios sin realizar ningún cambio en el repositorio original.
Adding a Remote Repository to Local Repository
A user can also work on Remote repositories by adding them to the local repositories. This will make the fetching and push process much easier than doing the same from the central repository. A default remote repository named origin gets created when the cloning process is done by the use of clone command. This remote ‘origin’ gets linked to the cloned repository.
Here, it can be seen that there is only one repository named origin which is the default repository.
To push content to this repository, the git push
command is used. It will by default push the content into the origin remote.
To add a remote repository with the local repository, $ git remote add
command is used. The file name and path are to be passed to this command as an argument.
$ git remote add
This will add the remote repository at the given path with the local repository.
Here, it can be seen that a new repository named new_remote has been added with the existing remotes.
Renaming a Remote Repository
Remote repositories can be renamed whenever there is a need. This can be done with a Git command termed as rename
.
$git remote rename
Nota: El ‘origen’ del repositorio remoto predeterminado se crea solo cuando se clona un repositorio, pero no cuando se crea un repositorio con el uso del
git init
comando.
Envío de cambios a un repositorio remoto
Una vez que el usuario ha terminado con las modificaciones en el repositorio local, es necesario enviar estos cambios al repositorio remoto. Esto se puede hacer con elgit push
comando. Los usuarios pueden definir qué rama se insertará en el repositorio pasando su nombre como argumento.
De forma predeterminada, los datos se enviarán desde la rama actual a la misma rama del repositorio remoto.
Extracción o recuperación de un repositorio remoto La extracción o extracción
de datos de un repositorio central se realiza para actualizar la copia local del repositorio del colaborador. Esto ayuda a reemplazar la versión anterior con la última. Este proceso se realiza mediante el uso de un comando de Git denominado comogit pull
ogit fetch
.
Pull
command y fetch
command se pueden usar para el mismo trabajo, ya que ambos actualizan el repositorio a la última versión. La única diferencia entre un comando de búsqueda y un comando de extracción es que el fetch
comando solo actualiza las sucursales remotas y no la sucursal local, mientras que pull
el comando actualiza los repositorios locales y remotos.