Come "ricominciare" in GitHub?


14

Pianifico una riscrittura completa del mio progetto, usando un altro framework ecc. Sarebbe bello conservare il vecchio codice inclusa la cronologia come riferimento. Qual è il modo migliore per farlo, al fine di evitare rischi, confusione e sorprese?

La mia idea è quella di creare un nuovo ramo, sostituire lì tutto e ottenere una "nuova" versione di base in esecuzione lì, taggare l'ultimo "vecchio" master e quindi unire il ramo al master. Sembra ragionevole?


18
Questa domanda sembra riguardare Git, non Github.
user253751

Se non hai intenzione di modificare il vecchio codice, vuoi solo che ti dia un'occhiata, puoi usare un tag. Ma i tag dovrebbero essere immutabili (ma puoi sempre eliminare, aggiungere di nuovo).
Travis,

2
Crea un nuovo repository.
CodeGnome

Risposte:


15

Voto per conservare tutto in un unico repository.

Vorrei:

  1. Crea un nuovo ramo per puntare al tuo vecchio codice
  2. Elimina tutto il codice e esegui il commit sul master
  3. Inizia la riscrittura sul master.

Questo è come:

# 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"

A parte: potresti anche creare un tag del vecchio codice legacy, se sai che non vorrai mai aggiungere alcun commit ad esso.

Quando dovresti creare un nuovo repository invece di farlo:

  • Quando il tuo repository corrente è proibizionalmente grande e la clonazione del repository è lenta. Si potrebbe voler considerare l'utilizzo di un nuovo repo.

8

A meno che non ci sia un motivo urgente per unire la riscrittura e i rami storici, li terrei separati. Crea un nuovo ramo per mantenere il vecchio codice, esegui la riscrittura in master e tienili separati in quel modo. In questo modo puoi sempre lavorare con il vecchio framework / implementazione se la situazione cambia.


3

Ecco a cosa servono i rami orfani.

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

Potrebbe essere necessario impostarenew_branch temporaneamente il ramo predefinito su in Github poiché visualizza master per impostazione predefinita.


2

Potresti creare un nuovo ramo nel progetto corrente, ma potrebbe essere meglio contrassegnare il repository come privato, quindi crearne uno nuovo per il tuo nuovo codice, in questo modo hai ancora il vecchio repository ma non c'è gonfia dal lavoro obsoleto.

Ti suggerisco di adottare questo approccio invece di provare a fondere in seguito il ramo con il master non solo perché avrai ancora quel gonfiore del codice obsoleto, ma anche perché potrebbero esserci diversi conflitti di unione frustranti quando sei pronto a fai il tiro. Per evitare che sarebbe meglio iniziare con un ramo chiaro piuttosto che unire due due completamente diversi insieme.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.