¿Cómo muevo una rama de Git a su propio repositorio?


180

Tengo una rama que me gustaría mover a un repositorio Git separado, e idealmente mantener el historial de esa rama en el proceso. Hasta ahora he estado mirando git filter-branch, pero no puedo entender si puede hacer lo que quiero hacer.

¿Cómo extraigo una rama de Git en su propio repositorio?

Respuestas:


281

Simplemente puede empujar una rama a un nuevo repositorio. Toda su historia irá con eso. A continuación, puede elegir si desea eliminar la rama del repositorio original.

p.ej

git push url://to/new/repository.git branch-to-move:new-branch-name

Para un nuevo repositorio, new-branch-name es típicamente master.

Se puede crear un nuevo repositorio vacío git init.


15
En caso de que alguien se lo pregunte, sustituí la URL con la ruta a un directorio de repositorio de Git, y eso funcionó perfectamente.
Aupajo

48
También puede nombrar el nombre de la sucursal en el nuevo repositorio: git push url://to/new/repository.git branch-to-move:new-branch-name
Yves Van Broekhoven

44
El comentario anterior de Yves es correcto, de lo contrario no tendrá un maestro allí y el proceso de clonación concluirá warning: remote HEAD refers to nonexistent ref, unable to checkout.. Si ya está en esa etapa, simplemente vaya git checkout -b branch-to-movey esté a salvo o simplemente vaya git checkout -b mastera tener su rama maestra :)
Ain Tohvri

git checkout -b masterresolvió mi problema, estaba en la pantalla error: src refspec master does not match any.(solo me pregunto por qué no vi el nombre de la sucursal en la que estaba) Gracias
kangkyu

2
En caso de que esta respuesta también sea confusa para usted, así es como lo entendí para que funcione: 1) en su terminal, esté en el directorio que contiene el repositorio y la rama que desea convertir en un nuevo repositorio; 2) urldebe ser una URL de git, como git@github.com: brianzelip / groceries.git; 3) branch-to-movees la rama del repositorio actual que desea convertir en un nuevo repositorio; 4) new-branch-namees el nombre que desee para la nueva sucursal en la nueva operación está creando, es decir: master.
Brian Zelip el

19

Esto mantendrá el historial de todas las ramas, pero haga que su copia apunte a una rama en particular:

git clone -b newbranch CurrentRepo NewRepo

Esto no 'mueve' nada, solo hace una copia.


2
Vale la pena señalar que clone -bes nuevo. Requiere git> = 1.6.5 (lanzado en octubre de 2009).
CB Bailey

Tuve problemas para que esto funcionara, pero eso fue antes de ver el mensaje de Charles Bailey.
Aupajo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.