¿Cómo "empezar de nuevo" en GitHub?

13

Planeo una reescritura completa de mi proyecto, utilizando otro marco, etc. Sería bueno mantener el código antiguo, incluido el historial, como referencia. ¿Cuál es la mejor manera de hacerlo para evitar riesgos, confusiones y sorpresas?

Mi idea es crear una nueva rama, reemplazar todo y obtener una versión "nueva" básica que se ejecuta allí, etiquetar el último "antiguo" maestro y luego combinar la rama con el maestro. ¿Esto suena razonable?

    
pregunta Landei 27.02.2016 - 16:50

4 respuestas

13

Voto por mantener todo en un solo repositorio.

Yo:

  1. Crea una nueva rama para que apunte a tu código anterior
  2. Eliminar todo el código y cometer en maestro
  3. Comience su reescritura en el master.

Así es como:

# checkout the master branch
git checkout master

# create a new branch so you can find the old code easily
git branch oldStuff-KeepingForReference

# push the branch to github
git push origin oldStuff-KeepingForReference

# You currently have the master branch checked out
# so now cd to the project root and start your rewrite: 
cd <your project root>
rm -rf *

# Create a commit of the delete
git add --all *
git commit -m "Fresh start"

# Start your rewrite
echo "Some changes" > file.txt
git add file.txt
git commit -m "This is the first commit of the rewrite"

Aparte: también puedes hacer una etiqueta del antiguo código heredado, si sabes que nunca querrás agregar ningún compromiso.

Cuando debes crear un nuevo repositorio en lugar de hacer esto:

  • Cuando su repo actual es prohibitivamente grande y la clonación es lenta. Usted puede desear considerar usar un nuevo repositorio.
respondido por el sixtyfootersdude 02.03.2016 - 16:17
8

A menos que haya una razón apremiante para combinar la reescritura y las ramas históricas, las mantendré separadas. Cree una nueva rama para mantener el código anterior, reescriba en maestro y manténgalos separados de esa manera. De esa manera, siempre puede trabajar con el marco / implementación anterior si la situación cambia.

    
respondido por el SnoProblem 27.02.2016 - 19:18
3

Para eso están las ramas huérfanas.

git branch -m master new_branch       #rename the branch
git push origin new_branch:new_branch #push the old code
git push origin :master               #delete the origin/master branch containing the old code
git checkout --orphan master          #create a new orphane branch - master. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and commits.

echo foo > file.txt
git add file.txt
git commit -m 'init commit'
git push origin master

Es posible que tengas que configurar temporalmente la rama predeterminada en new_branch en Github , ya que muestra el maestro de forma predeterminada.

    
respondido por el Jürgen Paul 04.03.2016 - 01:34
2

Podrías crear una nueva rama en el proyecto actual, pero puede ser mejor marcar el repositorio como privado y luego crear una nueva para tu nuevo código, de esa manera aún tendrás el repositorio antiguo pero no hay demasiados elementos obsoletos. trabajo.

Le sugiero que adopte este enfoque, en lugar de intentar fusionar luego la rama para volver a dominar, no solo porque todavía tendrá esa gran cantidad del código obsoleto, sino también porque puede haber varios conflictos de fusión frustrantes para cuando llegue el momento. re listo para hacer el tirón. Para evitar eso, sería mejor comenzar con una rama clara en lugar de fusionar dos ramas completamente diferentes.

    
respondido por el IIllIIll 28.02.2016 - 14:54

Lea otras preguntas en las etiquetas