Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.
Versión del artículo: Enterprise Server 2.15

Esta versión de GitHub Enterprise se discontinuará el Esta versión de GitHub Enterprise se discontinuó el 2019-10-16. No se realizarán lanzamientos de patch, ni siquiera para problemas de seguridad críticos. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise. For help with the upgrade, contact GitHub Enterprise support.

Acerca de las fusiones de subárbol de Git

Si necesitas gestionar múltiples proyectos dentro de un solo repositorio, puedes usar una "fusión de subárbol" para manejar todas las referencias.

Habitualmente, una fusión de subárbol se usa para contener un repositorio dentro de otro repositorio. El "subrepositorio" se almacena en una carpeta del repositorio principal.

La mejor manera de explicar las fusiones de subárbol es mostrar por ejemplo. Haremos lo siguiente:

Configurar el repositorio vacío para una fusión de subárbol

  1. Abre el terminal TerminalTerminalGit Bash.

  2. Crear un directorio nuevo y navegar a él.

    $ mkdir test
    $ cd test
  3. Inicializar un repositorio de Git nuevo.

    $ git init
    > Initialized empty Git repository in /Users/octocat/tmp/test/.git/
  4. Crear y confirmar un archivo nuevo.

    $ touch .gitignore
    $ git add .gitignore
    $ git commit -m "initial commit"
    > [master (root-commit) 3146c2a] initial commit
    >  0 files changed, 0 insertions(+), 0 deletions(-)
    >  create mode 100644 .gitignore

Adding a new repository as a subtree

  1. Agregar una URL remota nueva que apunte a un proyecto por separado en el que estemos interesados.

    $ git remote add -f spoon-knife git@github.com:octocat/Spoon-Knife.git
    > Updating spoon-knife
    > warning: no common commits
    > remote: Counting objects: 1732, done.
    > remote: Compressing objects: 100% (750/750), done.
    > remote: Total 1732 (delta 1086), reused 1558 (delta 967)
    > Receiving objects: 100% (1732/1732), 528.19 KiB | 621 KiB/s, done.
    > Resolving deltas: 100% (1086/1086), done.
    > From git://github.com/octocat/Spoon-Knife
    >  * [new branch]      master     -> Spoon-Knife/master
  2. Merge the Spoon-Knife project into the local Git project. Esto no modifica ninguno de tus archivos localmente, pero prepara Git para el siguiente paso.

    If you're using Git 2.9 or above:

    $ git merge -s ours --no-commit --allow-unrelated-histories spoon-knife/master
    > Automatic merge went well; stopped before committing as requested

    If you're using Git 2.8 or below:

    $ git merge -s ours --no-commit spoon-knife/master
    > Automatic merge went well; stopped before committing as requested
  3. Create a new directory called spoon-knife, and copy the Git history of the Spoon-Knife project into it.

    $ git read-tree --prefix=spoon-knife/ -u spoon-knife/master
  4. Confirmar los cambios para mantenerlos seguros.

    $ git commit -m "Subtree merged in spoon-knife"
    > [master fe0ca25] Subtree merged in spoon-knife

Although we've only added one subproject, any number of subprojects can be incorporated into a Git repository.

Tip: If you create a fresh clone of the repository in the future, the remotes you've added will not be created for you. You will have to add them again using the git remote add command.

Synchronizing with updates and changes

When a subproject is added, it is not automatically kept in sync with the upstream changes. You will need to update the subproject with the following command:

$ git pull -s subtree remotename branchname

Para el ejemplo de más arriba, esto sería:

$ git pull -s subtree spoon-knife master

Leer más

Pregunta a una persona

¿No puedes encontrar lo que estás buscando?

Contáctanos