Wie fange ich in GitHub von vorne an?


14

Ich plane eine vollständige Umschreibung meines Projekts, unter Verwendung eines anderen Frameworks usw. Es wäre schön, den alten Code einschließlich des Verlaufs als Referenz beizubehalten. Was ist der beste Weg, um Risiken, Verwirrung und Überraschungen zu vermeiden?

Meine Idee ist, eine neue Verzweigung zu erstellen, dort alles zu ersetzen und eine grundlegende "neue" Version laufen zu lassen, den letzten "alten" Master zu markieren und dann die Verzweigung zum Master zusammenzuführen. Hört sich das vernünftig an?


18
Diese Frage scheint sich um Git zu handeln, nicht um Github.
user253751

Wenn Sie nicht vorhaben, alten Code zu bearbeiten, sollten Sie nur einen Blick darauf werfen, wie Sie ein Tag verwenden können. Tags sollten jedoch unveränderlich sein (aber Sie können sie jederzeit löschen, erneut hinzufügen).
Travis

2
Erstellen Sie ein neues Repository.
CodeGnome

Antworten:


15

Ich stimme dafür, dass alles in einem einzigen Repository aufbewahrt wird.

Ich würde:

  1. Erstellen Sie eine neue Verzweigung, um auf Ihren alten Code zu verweisen
  2. Löschen Sie den gesamten Code und übertragen Sie ihn auf den Master
  3. Beginnen Sie mit dem Umschreiben auf master.

Das ist wie:

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

Nebenbei: Sie können auch eine Markierung des alten Legacy-Codes erstellen, wenn Sie wissen, dass Sie ihm niemals Commits hinzufügen möchten.

Wenn Sie stattdessen ein neues Repository erstellen sollten:

  • Wenn Ihr aktuelles Repo unerschwinglich groß ist und das Klonen des Repos langsam ist. Möglicherweise möchten Sie ein neues Repo verwenden.

8

Sofern es keinen dringenden Grund gibt, die Zweige für das Umschreiben und die historischen Zweige zusammenzuführen, würde ich sie getrennt halten. Erstellen Sie einen neuen Zweig, um den alten Code beizubehalten, schreiben Sie ihn im Master neu und trennen Sie sie auf diese Weise. Auf diese Weise können Sie immer mit dem alten Framework / der alten Implementierung arbeiten, wenn sich die Situation ändert.


3

Dafür sind verwaiste Zweige da.

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

Möglicherweise müssen Sie den Standardzweig new_branchin Github vorübergehend auf "" setzen, da standardmäßig "" master "" angezeigt wird.


2

Sie könnten im aktuellen Projekt eine neue Verzweigung erstellen, aber es ist möglicherweise besser, das Repository als privat zu markieren, als eine neue für Ihren neuen Code zu erstellen. Auf diese Weise haben Sie weiterhin das alte Repository, aber die veraltete Arbeit hat nichts zu bieten.

Ich schlage vor, Sie gehen auf diese Weise vor, anstatt zu versuchen, die Verzweigung später wieder zum Master zusammenzuführen, nicht nur, weil der veraltete Code Sie immer noch überfordert, sondern auch, weil es möglicherweise mehrere frustrierende Zusammenführungskonflikte gibt, wenn Sie dazu bereit sind Mach den Zug. Um dies zu vermeiden, ist es am besten, mit einer klaren Verzweigung zu beginnen, anstatt zwei völlig unterschiedliche zu verschmelzen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.