Come "ricominciare" in GitHub?

13

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

La mia idea è di creare un nuovo ramo, sostituire lì tutto e ottenere una versione "nuova" di base, eseguire il tag sull'ultimo "vecchio" master e quindi unire il ramo al master. Suona ragionevole?

    
posta Landei 27.02.2016 - 16:50
fonte

4 risposte

13

Voto per mantenere tutto in un unico repository.

Vorrei:

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

Ecco 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: puoi anche creare un tag del vecchio codice legacy, se sai che non vorrai mai aggiungervi alcun commit.

Quando dovresti creare un nuovo repository invece di fare questo:

  • Quando il repository attuale è proibitivamente grande e la clonazione del repository è lenta. potresti voler prendere in considerazione l'utilizzo di un nuovo repository.
risposta data 02.03.2016 - 16:17
fonte
8

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

    
risposta data 27.02.2016 - 19:18
fonte
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 temporaneamente impostare il ramo predefinito su new_branch in Github poiché visualizza per impostazione predefinita il master.

    
risposta data 04.03.2016 - 01:34
fonte
2

Potresti creare un nuovo ramo nel progetto corrente, ma potrebbe essere preferibile contrassegnare il repository come privato e poi crearne uno nuovo per il tuo nuovo codice, in questo modo hai ancora il vecchio repository ma non c'è nulla di obsoleto lavoro.

Ti suggerisco di adottare questo approccio invece di cercare di unire successivamente il ramo al master non solo perché avrai ancora quel rigonfiamento del codice obsoleto, ma anche perché potrebbero esserci diversi conflitti di fusione frustranti dal momento in cui tu " sono pronto a fare il tiro. Per evitare che sarebbe meglio iniziare con un ramo chiaro piuttosto che unire due completamente diversi tra loro.

    
risposta data 28.02.2016 - 14:54
fonte

Leggi altre domande sui tag