Могу ли я / я должен раскошелиться на собственное репозиторий на github? - PullRequest
20 голосов
/ 11 марта 2012

Мое репозиторий github называется 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. Должен ли я все равно это делать?

Ответы [ 4 ]

20 голосов
/ 11 марта 2012

У вас не может быть двух репозиториев с одним и тем же именем, и разветвление на 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 (используя названия примеров выше) при внесении изменений.

5 голосов
/ 25 июля 2015

Я знаю, что это старый, но я недавно столкнулся с той же проблемой. То, что сработало для меня, было следующим:

  1. Создать new_repo на github
  2. git clone new_repo
  3. cd new_repo
  4. git remote add upstream old_repo.git
  5. git pull upstream master
  6. git push origin master

Я получил все вышеперечисленное от здесь .

3 голосов
/ 11 марта 2012

Учитывая, что у вас может быть 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 - имена ваших ветвей.

2 голосов
/ 17 марта 2012

В итоге вот что я сделал:

  1. Я переименовал существующий репо. Это прекрасно работает (спасибо, github, за то, что так легко). Не забудьте отредактировать файл config вашего собственного git-репо, чтобы сохранить отношение удаленной ветки между вашей собственной мастер-веткой и главной веткой github-репо.

  2. Я создал новое хранилище с именем старого хранилища, состоящее только из README.md , предоставляющего новый URL существующего хранилища.

Таким образом, я не закончил тем, что отделил содержание книги iOS 4 от содержания книги iOS 5. Вместо этого я изменил структуру исходного репо и дал ему более общее название, не привязанное к iOS 4 в частности. И существующие ссылки на старое репо не ломаются, потому что по этому URL есть репо-заполнитель, указывающий на новое репо.

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