Comencemos con el repositorio de Git. Crearemos una carpeta llamada proyecto.git e inicialícelo para que se convierta en el repositorio remoto:
proyecto $ mkdir.git$ cd proyecto.git /
$ git init --bare
Repositorio de Git vacío inicializado en / Users / zakh_eecs / _work / LearnGIT / git_remote_repository /
proyecto.git /
Ahora vaya a una nueva ubicación donde puede crear una carpeta limpia. Cree la carpeta project_source e inicialícela para Git:
$ mkdir project_source$ cd fuente_proyecto
$ git init
Repositorio de Git vacío inicializado en / Users / zakh_eecs / _work / LearnGIT / git_branching_source /
project_source /.git /
$ touch Léame.TXT
$ git add -A
$ git commit -m "Confirmación inicial"
[master (root-commit) 176134f] Confirmación inicial
1 archivo modificado, 0 inserciones (+), 0 eliminaciones (-)
modo de creación 100644 Léame.TXT
Project_setup es un directorio de Git con ReadMe.archivo txt. Sin embargo, no está conectado a nuestro repositorio remoto. Vamos a configurar el proyecto.git para que sea el repositorio remoto de project_source. Podemos lograr esto a través del siguiente comando:
$ git remoto agregar origen / Usuarios / zakh_eecs / _work / LearnGIT / git_remote_repository / project.git$ git push origin master
Contando objetos: 3, hecho.
Objetos de escritura: 100% (3/3), 213 bytes | 0 bytes / s, hecho.
Total 3 (delta 0), reutilizado 0 (delta 0)
Para / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.git
* [nueva rama] maestro -> maestro
Con el comando git remote add origin, hemos creado la conexión entre el proyecto.git y project_source. Con el comando git push origin master, hemos enviado nuestra rama maestra al repositorio remoto.
Revisemos nuestras ramas (aún en la carpeta project_source):
$ git branch* Maestro
$ git branch -r
origen / maestro
$ git branch -a
* Maestro
mandos a distancia / origen / maestro
El primer comando muestra solo la rama local. La opción -r muestra la rama remota. Y la opción -a muestra tanto local como remoto.
Creemos algunas ramas en nuestro directorio de trabajo:
$ git branch desarrollorevisión de $ git branch
$ git branch experimental
$ git branch -a
desarrollo
experimental
revisión
* Maestro
mandos a distancia / origen / maestro
Hemos creado ramas denominadas desarrollo, hotfix y experimental. Aparecen en nuestra lista de sucursales locales. Pero en los controles remotos / origen, solo hay una rama maestra porque esa es la única que presionamos. El maestro estrella (*) significa que todavía estamos en la rama maestra local. Vayamos a la rama de desarrollo, confirmemos los cambios y enviemos esos cambios al repositorio remoto.
$ git checkout desarrolloCambiado a 'desarrollo' de sucursales
$ echo abc> Léame.TXT
$ git add -A
$ git commit -m "Rama de desarrollo modificada"
[desarrollo dd9933e] Rama de desarrollo modificada
1 archivo modificado, 1 inserción (+)
$ git push origin desarrollo
Contando objetos: 3, hecho.
Objetos de escritura: 100% (3/3), 257 bytes | 0 bytes / s, hecho.
Total 3 (delta 0), reutilizado 0 (delta 0)
Para / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.git
* [nueva rama] desarrollo -> desarrollo
Revisemos todas las ramas ahora:
$ git branch -a* desarrollo
experimental
revisión
Maestro
remotos / origen / desarrollo
mandos a distancia / origen / maestro
Vemos que estamos en la rama de desarrollo local, pero también hay una rama de desarrollo remoto. Cuando impulsamos nuestros cambios con el desarrollo de origen de git push, se creó la rama de desarrollo en remotes / origin.
Salgamos ahora de project_source y busquemos un lugar nuevo donde podamos tener una nueva carpeta. Aquí vamos a clonar el repositorio remoto con el siguiente comando:
$ git clone / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.gitClonando en 'proyecto' ..
hecho.
Hemos clonado una nueva copia llamada proyecto del proyecto.git. Ingrese a la carpeta del proyecto y verifique las ramas:
$ cd proyecto$ git branch
* Maestro
Cuando Git hace un clon inicial desde un repositorio remoto, solo obtiene la rama maestra. Si usamos la opción -a, vemos:
$ git branch -a* Maestro
remotes / origin / HEAD -> origen / maestro
remotos / origen / desarrollo
mandos a distancia / origen / maestro
Tenga en cuenta que no hay una rama de desarrollo local. Además, nunca enviamos hotfix y ramas experimentales de project_source a project.git, para que no los veamos. El repositorio remoto tiene ramas maestras y de desarrollo (remotes / origin / HEAD -> origin / master no es una rama, solo le dice a dónde apunta HEAD).
Llevemos la rama de desarrollo a nuestro entorno de trabajo:
$ git fetch --todosObteniendo origen
$ git checkout desarrollo
Desarrollo de sucursales configurado para rastrear el desarrollo de sucursales remotas desde el origen.
Cambiado a una nueva rama de 'desarrollo'
Si está utilizando una versión anterior de Git, es posible que deba usar:
$ git checkout desarrollo origen / desarrolloAhora, si usamos el comando branch, obtenemos:
$ git branch -a* desarrollo
Maestro
remotes / origin / HEAD -> origen / maestro
remotos / origen / desarrollo
mandos a distancia / origen / maestro
Podemos hacer cambios en la rama de desarrollo, confirmar los cambios y luego presionarlos usando el comando de desarrollo de origen de git push.
En conclusión
Cuando trabaje con GitHub y BitBucket, puede usar el enlace HTTPS o SSH para conectarse a su repositorio remoto. Así que establecerás tu origen en esos enlaces. Pero los principios de la rama remota son los mismos que se describen aquí.
Estudio adicional:
- https: // git-scm.com / docs / git-branch
- https: // git-scm.com / book / en / v2 / Git-on-the-Server-Setting-Up-the-Server
- https: // ayuda.github.com / articles / agregar-un-proyecto-existente-a-github-usando-la-línea-de-comandos /
- https: // ayuda.github.com / articles / push-to-a-remote /