Отправка старого кода в репозиторий git - PullRequest
1 голос
/ 29 июня 2011

Я новичок в Git.У меня есть удаленный репозиторий Git на моем сервере, который содержит мастер, который является текущей версией моего кода.На моем локальном компьютере у меня есть старые версии (около 10) этого кода, которые просто хранятся где-то еще до того, как я начал использовать контроль версий (просто обычные файлы).

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

Итак, как мне это сделать, добавить их в виде веток или тегов и как мне это сделать?хотите добавить их в удаленное хранилище?

Сейчас я делаю это: просто удаляю ВСЕ код текущей версии (уже переданный и отправленный на сервер), копирую и вставляю старые файлы кода (скажем, версия 0.2)и создайте новую ветку (версия 0.2), зафиксируйте ее и затем отправьте на сервер.Теперь у меня есть 2 ветки, мастер и версия 0.2.Должен ли это быть правильный путь?

Ответы [ 2 ]

1 голос
/ 29 июня 2011

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

При этом я также предполагаю, что у вас есть несколько веток, похожих на следующие:

  1. v0.1
  2. v0.2
  3. v0.3
  4. 1012 * Мастер *

В этом случае v0.1 является самым старым, v0.2 построен на v0.1 и так далее. Чтобы на самом деле сделать это мастером, я предлагаю перебазировать ветки так, чтобы в конце мастер содержал код из всех ветвей. Шаги для этого:

  1. git checkout v0.2
  2. git checkout -b REBASE_v0.2
    • Создавая новую ветку с именем REBASE, мы не влияем на оригинальную ветку v0.2. Если что-то идет не так, мы всегда можем вернуться к старой ветке.
  3. git rebase v0.1
  4. Разрешение любых конфликтов.
  5. Если вы удалили какие-либо файлы между v0.1 и v0.2 git rm FILE каждый файл.
  6. git checkout v0.3
  7. git checkout -b REBASE_v0.3
  8. git rebase REBASE_v0.2
  9. Решить любые конфликты
  10. Если вы удалили файлы между v0.2 и v0.3 git rm FILE каждый файл.
  11. Промойте и повторите шаги 6-10 для всех дополнительных веток версий, которые вы импортировали.
  12. git checkout master
  13. git checkout -b REBASE_master
  14. git rebase REBASE_v0.3
  15. Решить любые конфликты
  16. git diff master
    • Предполагая, что все конфликты были разрешены правильно, это не должно показать различий.
  17. git checkout master
  18. git branch master_old
  19. git reset --hard REBASE_master
  20. git branch -D REBASE_v0.2 REBASE_v0.3 REBASE_master
    • Избавиться от веток ребазе

Как только вы убедитесь, что все хорошо, вы можете пойти дальше и избавиться от оригинальных веток: git branch -D v0.1 v0.2 v0.3 master_old

На данный момент у вас должна быть просто ветка master с вашим текущим прогрессом кода.

1 голос
/ 29 июня 2011

Что вы можете сделать:

  1. Найти все свои старые версии и отсортировать их по возрасту
  2. Создать хранилище в самой старой и зафиксировать
  3. Заменить всефайлы со второй самой старой версией и коммит
  4. Повторяйте, пока вы не зафиксируете все версии
  5. Из клона вашего удаленного репозитория извлеките этот новый репозиторий
  6. Разрешить конфликт слияния с помощьюсохраняя новейшую версию и фиксируя

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...