2012-09-22 11 views
49

Tengo git repo con dos ramas no relacionadas, maestra y configuraciones. He creado configuraciones, purgué todos los archivos y luego los coloqué solo en archivos de configuración. Ahora quiero insertar esto en repositorio remoto, pero como si fuera nuevo, rama vacía (sin registros de todos mis cambios y revisiones anteriores de la rama original).Cómo empujar una nueva sucursal sin historial

¿Cómo puedo purgar todo el historial y presionarlo?

+3

Esto se ve muy similar: http://stackoverflow.com/questions/1384325/in-git-is-there-a-simple-way-of-introducing-an-unrelated-branch-to -a-repositorio – Mark

+0

@Mark gracias, eso hace lo que necesito. – AoeAoe

Respuesta

100

Purgar todos los archivos no elimina el historial. Primero debe crear una rama que no tenga historial y agregar sus archivos de configuración. En estos días, git checkout tiene una opción --orphan que crea una rama sin historial. Aquí está la información sobre la opción --orphan:

--orphan < new_branch>

Crear una nueva rama huérfano, llamado < new_branch>, partió de < punto_inicial> y cambiar a él. El primer compromiso realizado en esta nueva rama no tendrá padres y será la raíz de una nueva historia totalmente desconectada de todas las otras ramas y compromisos.

El índice y el árbol de trabajo se ajustan como si previamente hubiera ejecutado "git checkout < start_point>". Esto le permite iniciar un nuevo historial que registra un conjunto de rutas similares a < start_point> ejecutando fácilmente "git commit -a" para realizar la confirmación de la raíz.

Esto puede ser útil cuando quiere publicar el árbol desde una confirmación sin exponer su historial completo. Es posible que desee hacer esto para publicar una rama de código abierto de un proyecto cuyo árbol actual es "limpio", pero cuyo historial completo contiene bits de código privados o gravados de otra manera.

Si desea iniciar un historial desconectado que registra un conjunto de rutas que es totalmente diferente al de < start_point>, debe borrar el índice y el árbol de trabajo inmediatamente después de crear la rama huérfana ejecutando "git rm -rf ". desde el nivel superior del árbol de trabajo. Después, estará listo para preparar sus nuevos archivos, repoblar el árbol de trabajo, copiándolos de otra parte, la extracción de un archivo comprimido, etc.

Aquí hay un enlace a la documentación de checkout. También puede ejecutar git help checkout.

Una vez que haya creado su bifurcación sin historial, cuando la envíe al servidor, tampoco tendrá ese historial. FWIW, me ayuda a pensar en git push como "hacer que la rama remota se vea igual que mi local". Entonces, si tiene historial y empuje, tendrá historia. Si no lo hace, entonces la rama empujada no lo hará.

13

Tenía que hacer esto para enviar un código de un profesional independiente sin compartir información privada o borrar mi historial.

En caso de que alguno de ustedes esté usando SourceTree, así es como logré hacerlo. Por favor, avíseme si hice algo mal o me olvido de algo, ya que no estoy familiarizado con la administración del control de fuente.

  1. Fui al botón de terminal en el árbol de fuentes.
  2. he creado una nueva rama 'huérfano' utilizando el comando: 'git checkout --orphan limpiar-ver', donde limpia-ver es mi nombre de la sucursal
  3. Cerré la terminal y vi que mi registro de confirmación fue despejado porque estaba en una nueva sucursal huérfana. Organicé todo mi código fuente y cometí los cambios.
  4. Configuré mi repositorio de bitbucket en repositorio> agregar remoto o repositorio> configuración de repositorio> agregar.
  5. Cerré eso, y hice clic en el botón
  6. Seleccioné mi nueva rama 'clean-ver' dijo ok.

Cuando revisé bitbucket, parece que esto parecía haber funcionado y descartado mi historial de confirmaciones.

Espero que esto ayude a alguien.

11

¿Cómo puedo purgar todo el historial y presionarlo?

git checkout --orphan <name_you_choose_for_orphan_branch> 
git commit 

A continuación, puede ejecutar su cf.

git push <remote-name> <branch-name> 


this one-liner

Cuestiones relacionadas