Bifurcar (Fork) un Repositorio GitHub - LPC-Ltda/Ruby-on-Rails GitHub Wiki

Contribuyendo a un proyecto

En cierto punto usted se encontrará esperando contribuir al proyecto de otra paersona, o le gustaría usar el proyecto de alguien como punto de partida para el propio. Esto es conocido como "forking". Para este tutorial usaremos el proyecto Spoon-Knife, hosteado en GitHub.com.

Paso 1: Bifurcando (Fork) el repositorio Spoon-Knife

Para bifurcar este proyecto, click sobre el botón "Fork" en el repositorio GitHub.com.

Bifurcar el proyecto Spoon-Knife

Paso 2: Clone su bifurcación

Usted ha bifurcado exitósamente el repositorio Spoon-Knife, pero este sólo existe en GitHub. Para estar habilitado a trabajar en el proyecto, usted necesita clonarlo en su máquina local.

Corra el siguiente código

$ git clone https://github.com/username/Spoon-Knife.git
# Clones your fork of the repository into the current directory in terminal

Step 3: Configure remotes

Cuando un repositorio es clonado, tiene un remote por defecto llamado origin que apunta a su bifurcación en GitHub, el repositorio original no se bifurca de ahí. Para seguir el repositorio original, usted necesita agregar otro remote llamado upstream:

Un remote es un repositorio almacenado en otro computador, en este caso en el servidor GitHub. Es una práctica estándar (y también el defecto cuando se clona un repositorio) dar el nombre origin al remote que apunta a su principal repositorio exterior (por ejemplo su repositorio GitHub).

Git soporta múltiples remotos. Este es comúnmente usado cuando se bifurca un repositorio.

$ cd Spoon-Knife
# Changes the active directory in the prompt to the newly cloned "Spoon-Knife" directory
git remote add upstream https://github.com/octocat/Spoon-Knife.git
# Assigns the original repository to a remote called "upstream"
git fetch upstream
# Pulls in changes not present in your local repository, without modifying your files

Mas cosas que usted puede hacer

Usted ha bifurcado exitósamente un repositorio, ahora veremos otras cosas interesantes que se pueden hacer:

Push commits

Una vez que usted ha hecho algunos commits a un repositorio bifurcado y desea empujarlos (push) dentro de su proyecto bifurcado, ustede deberá hacerlo de la misma forma en que lo haría con un repositorio regular.

Piense en un commit como si fuera una fotografía instantánea de su proyecto - código, archivos, todo - en un instante de tiempo particular. Después de su primer commit git sólo grabará los archivos que se han modificados, de esta forma ahorra espacio.

Advertencia: Git hará su mejor esfuerzo por comprimir sus archivos, pero archivos enormes y binarios pueden causar que su repositorio se ponga inchado y pesado. Evite realizar commits de archivos comprimidos (zips, rars, jars), código compilado (archivos de objetos, librerías, ejecutables), respaldos de bases de datos, y archivos de media (flv, psd, music, movies)

$ git push origin master
# Pushes commits to your remote repository stored on GitHub

Tire cambios dentro del upstream

Pull in upstream changes

Si el repositorio original desde donde se bifurcó su proyecto necesita ser actualizado, usted puede agregar esas actualizaciones a su bifurcación ejecutando el siguiente código:

$ git fetch upstream
# Fetches any new changes from the original repository
git merge upstream/master
# Merges any changes fetched into your working files

Cual es la diferencia entre fetch y pull?

Hay dos formas de obtener commits desde un repositorio remoto o rama: git fetch y git pull. Si bien parecen similares al comienzo, tienen diferencias distintivas que debe considerar.

Pull

$ git pull upstream master
# Pulls commits from 'upstream' and stores them in the local repository

Cuando usted usa git pull, git trata de hacer automáticamente su trabajo por usted. Este es sensitivo al contexto, de esta forma git mezclará (merge) y tirará los commits dentro de la rama que usted está trabajando actualmente. Una cosa a tener en mente es que git pull automáticamente mezclará los commits sin dejarlo revisarlos primero. Si usted no maneja cercanamente sus ramas puede caer dentro de conflictos frecuentes.

Fetch & Merge

$ git fetch upstream
# Fetches any new commits from the original repository
git merge upstream/master
# Merges any fetched commits into your working files

Cuando usted ejecuta git fetch, git obtiene cualquier commit desde el remote objetivo que usted no tenga y lo almacena en su repositorio local. Sin embargo, no lo mezcla con su rama actual. Esto es particularmente útil si usted necesita mantener su repositorio actualizado pero está trabajando en algo que se puede stropear si actualiza sus archivos. Para integrar los commits dentro de su rama local, usted usa git merge. Esto combina la rama especificada y le pregunta si encontrara algún conflicto.

Crear Ramas

La creación de ramas le permitirá construir nuevas características o probar ideas sin poner en riesgo su proyecto principal. En git, una rama es una suerte de marcador que referencia el último commit realizado en una rama. Esto hace que las ramas sean muy pequeñas y que sea simple trabajar con ellas.

Como se usan las ramas?

Las ramas sin muy simples de usar y pueden ahorrarle muchos dolores de cabeza, especialmente cuando se trabaja con muchas personas. Para crear una rama y comenzar a trabajar en ella, corra estos comandos:

$ git branch mybranch
# Creates a new branch called "mybranch"
git checkout mybranch
# Makes "mybranch" the active branch

Alternativamente usted puede usar el comando abreviado:

$ git checkout -b mybranch
# Creates a new branch called "mybranch" and makes it the active branch

Para cambiar entre ramas use git checkout

$ git checkout master
# Makes "master" the active branch
git checkout mybranch
# Makes "mybranch" the active branch

Una vez haya terminado de trabajar en su rama y esté listo para combinarla dentro de la rama principal, use merge.

$ git checkout master
# Makes "master" the active branch
git merge mybranch
# Merges the commits from "mybranch" into "master"
git branch -d mybranch
# Deletes the "mybranch" branch

TIP: cuando usted cambia de rama, los archivos en los cuales usted trabaja (la "working copy") es actualizada para reflejar los cambios en la nueva rama. Si usted tiene cambios que no ha actualizado (commit), git se asegurará de no perderlos. Git es también muy cuidadoso durante las mezclas y tiradas (merges y pulls) para asegurarse de que usted no pierda ningún cambio. Cuando tenga dudas, actualize pronto y seguido.

Pull requests

Si usted quiere contribuir a la bifurcación original, usted puede enviarle al autor original un pull request

Unwatch el repositorio principal

Cuando usted bifurca un repositorio particularmente popular, usted se podrá encontrar con muchas actualizaciones no deseadas. Para des-suscribirse de las actualizaciones al repositorio principal, click el botón "Unwatch" del repositorio principal y seleccione "Not Watching".

Unwatch

Borre su bifurcación

En algún punto usted puede decidir borrar su bifurcación. Para borrar una bifurcación, sólo siga los mismos pasos que se debes hacer para borrar un repositorio regular.

⚠️ **GitHub.com Fallback** ⚠️