¿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.