Как «начать все сначала» в GitHub?

14

Я планирую полностью переписать свой проект, используя другую платформу и т. Д. Было бы неплохо сохранить старый код, включая историю, для справки. Как лучше всего это сделать, чтобы избежать риска, путаницы и неожиданностей?

Моя идея состоит в том, чтобы создать новую ветвь, заменить там все и получить базовую «новую» версию, работающую там, пометить последнего «старого» мастера, а затем объединить ветку с мастером. Это звучит разумно?

Landei
источник
18
Этот вопрос, похоже, касается Git, а не Github.
user253751
Если вы не планируете редактировать старый код, просто проследите, чтобы вы могли использовать тег. Но теги должны быть неизменными (но вы всегда можете удалить, повторно добавить).
Трэвис
2
Создать новый репозиторий.
CodeGnome

Ответы:

15

Я голосую за хранение всего в одном хранилище.

Я буду:

  1. Создайте новую ветку, чтобы указать на ваш старый код
  2. Удалить весь код и зафиксировать на мастере
  3. Начните переписывать на мастере.

Вот как:

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

Кроме того: Вы также можете сделать тег старого унаследованного кода, если знаете, что никогда не захотите добавлять к нему какие-либо коммиты.

Когда вы должны создать новый репозиторий вместо этого:

  • Когда ваш текущий репо слишком велик и клонирование является медленным. Вы можете рассмотреть возможность использования нового репо.
sixtyfootersdude
источник
8

Если бы не было неотложной причины слияния переписанных и исторических ветвей, я бы держал их отдельно. Создайте новую ветвь, чтобы сохранить старый код, переписать в master, и таким образом разделить их. Таким образом, вы всегда можете работать со старой платформой / реализацией, если ситуация изменится.

SnoProblem
источник
3

Вот для чего нужны сиротские ветви.

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

Возможно, вам придется временно установить ветку по умолчанию new_branchв Github, так как она отображает master по умолчанию.

Юрген Пауль
источник
2

Вы можете создать новую ветвь в текущем проекте, но, возможно, лучше пометить хранилище как частное, чем создать новое для вашего нового кода, таким образом, у вас все еще будет старое хранилище, но в устаревшей работе нет никаких проблем.

Я предлагаю вам использовать этот подход вместо того, чтобы пытаться позже объединить ветвь с мастером не только потому, что у вас по-прежнему будет это раздувание из устаревшего кода, но также и потому, что к тому времени, когда вы будете готовы, может возникнуть несколько неприятных конфликтов слияния сделать тягу. Чтобы избежать этого, лучше начать с чистой ветки, а не объединять две совершенно разные.

IIllIIll
источник