Як "почати спочатку" в GitHub?


14

Я планую повне перезапис свого проекту, використовуючи інший фреймворк тощо. Було б непогано зберегти старий код, включаючи історію для довідок. Який найкращий спосіб зробити це, щоб уникнути ризику, плутанини та сюрпризів?

Моя ідея - створити нову гілку, замінити там усе і отримати базову "нову" версію, що працює там, позначити останнього "старого" майстра, а потім об'єднати гілку з головним. Це звучить розумно?


18
Здається, це питання стосується Гіта, а не Гітбуба.
користувач253751

Якщо ви не плануєте редагувати старий код, просто хочете, щоб він легко оглянувся, ви можете використовувати тег. Але теги повинні бути незмінними (але ви завжди можете їх видаляти, повторно додавати).
Тревіс

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"

Убік: Ви також можете зробити тег старого застарілого коду, якщо знаєте, що ніколи не захочете до нього додавати жодних комісій.

Коли слід створити нове сховище замість цього:

  • Коли ваше поточне репо є непомірно великим і клонування репо є повільним. Ви можете розглянути можливість використання нового репо.

8

Якщо не існує нагальної причини об'єднати переписані та історичні гілки, я б тримав їх окремо. Створіть нову гілку, щоб зберегти старий код, виконайте перезапис у програмі master та нехай їх розділяють таким чином. Таким чином, ви завжди можете працювати зі старими рамками / реалізацією, якщо ситуація зміниться.


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, оскільки вона відображає програму за замовчуванням.


2

Ви можете створити нову гілку в поточному проекті, але, можливо, буде краще позначити сховище приватним, а потім створити нове для нового коду, таким чином, у вас все ще є старе сховище, але немає застарілості від застарілої роботи.

Я пропоную вам скористатися цим підходом, а не намагатися пізніше об'єднати гілку назад до освоєння не тільки тому, що у вас все-таки з'явиться цей відрив від застарілого коду, а й тому, що до моменту, коли ви готові, може виникнути кілька розчарувань конфліктів злиття. зробити тяг. Щоб уникнути цього, найкраще почати з чіткої гілки, а не зливати дві абсолютно різні разом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.