Может/должен ли я переделать собственный репозиторий github?
My github repo называется Programming-iOS-4-Book-Examples, потому что это пример кода из моей книги "Программирование iOS 4". Теперь я написал новое издание книги под названием "Программирование iOS 5". Мне нужно оставить старое репо на месте со старым именем, потому что есть ссылки на него по всей сети, и кому-то может понадобиться старый код. Но теперь я также хочу новое репо с новым именем Programming-iOS-5-Book-Examples, содержащее те же примеры, которые были перезаписаны для iOS 5 (плюс некоторые новые).
Естественно, я увидел это: Как я могу разблокировать свой собственный репозиторий GitHub? Но совет должен использовать ветки. Это не сработает для меня. Я не хочу использовать ветку, потому что это побеждает цель предоставления репо имени, на которое я могу ссылаться. Я хочу, чтобы публика нашла примеры iOS 4 в репозитории iOS 4 и моих iOS 5 в репозитории iOS 5.
Это похоже на идеальное использование вилки, но когда я нажимаю кнопку "Вилка", ничего не происходит; Мне, видимо, не разрешено разворачивать собственное репо.
Конечно, я мог бы просто сделать это совершенно новым репо, но это означало бы загрузку всех ресурсов по отдельности, что является неудачным, потому что все уже есть в репозитории iOS 4. Должен ли я просто так делать?
Ответы
Ответ 1
В конце концов, что я сделал:
-
Я переименовал существующее репо. Это отлично работает (спасибо, github, за то, что так легко). Не забудьте отредактировать собственный файл git repo config
, чтобы сохранить связь удаленного ветки между вашей собственной ветвью мастера и веткой master-сервера github.
-
Я создал новое репо со старым именем репо, состоящим только из README.md, предоставляющего существующий новый URL-адрес репо.
Таким образом, я не закончил разделение содержимого книги iOS 4 из содержимого книги iOS 5. Вместо этого я перестроил структуру исходного репо и дал ему более общее имя, но не привязанное к iOS 4 в частности. И существующие ссылки на старое репо не ломаются, потому что там репозиторий-заполнитель по этому URL-адресу, указывая на новое репо.
Ответ 2
У вас не может быть двух репозиториев с тем же именем, и разметка на Github автоматически передает имя, так что это не позволяет работать. Похоже, вам будет хорошо обслуживать, добавив ветку локально, а затем нажав на новый репозиторий Github с новым именем. Вы даже можете сохранить репозиторий Github, показывая master
как ветку:
git clone git://github.com/you/repo.git
git checkout -b new_book
[ create new repo on Github ]
git remote add new_origin git://github.com/you/repo.git
git push new_origin new_book:master
Просто используйте более подходящие имена, и вы золотые. Вы можете объединять обновления с общими примерами, добавлять дополнительные примеры в новый код книги, а при внесении изменений просто нажимайте на origin
и new_origin
(используя имена примеров выше).
Ответ 3
Я знаю, что это старо, но в последнее время я столкнулся с той же проблемой. Что для меня работало, было следующим:
- Создать new_repo в github
- git clone new_repo
- cd new_repo
- git удаленное добавление upstream old_repo.git
- git pull upstream master
- git push origin master
Я получил все вышеперечисленное из здесь.
Ответ 4
Учитывая, что у вас может быть URL-адрес, связывающий ветки в репо, вы все равно можете использовать ветки, которые INMHO являются естественным и простым способом для этого случая.
Например, у вас может быть следующий URL-адрес для примера iOS4:
https://github.com/mattneub/Programming-iOS-Book-Examples/tree/ios4
И https://github.com/mattneub/Programming-iOS-Book-Examples/tree/ios5 для примеров iOS5, где ios4
и ios5
- ваши имена ветвей.