Что на самом деле меняет перенос
Перенос репозитория GitHub перемещает репозиторий к другому аккаунту-владельцу. Это не то же самое, что смена имени пользователя профиля. Смена имени пользователя меняет публичную идентичность аккаунта и URL-адреса, построенные на его основе; перенос репозитория меняет владельца одного конкретного проекта. Если ваша цель — более чистое имя профиля, а не передача проекта кому-то другому, шаги переноса ниже — неподходящий инструмент.
Это различие важно для планирования. После удаления исходного аккаунта владельца никто не сможет войти, чтобы принять приглашения, одобрить последующие действия или исправить пропущенную ссылку. Всё, что зависит от старого аккаунта, нужно уладить до этого момента, а не после.
Условия, которые нужно подтвердить перед началом
Два условия решают, возможен ли перенос вообще:
Для переноса репозитория требуются права администратора и совместимый принимающий аккаунт без конфликтующего имени репозитория или сети форков. Источник
На практике это означает проверку трёх вещей на стороне владельца и одной на стороне получателя перед отправкой запроса:
| Проверка | Кто подтверждает | Почему это блокирует перенос |
|---|---|---|
| У аккаунта владельца есть права администратора на репозиторий | Владелец | Без прав администратора перенос нельзя инициировать |
| Принимающий аккаунт совместим | Получатель | Несовместимый принимающий аккаунт останавливает перенос |
| На стороне получателя ещё нет репозитория с таким же именем | Получатель | Конфликтующее имя блокирует перемещение |
| Нет конфликтующей сети форков | Получатель | Конфликтующая сеть форков блокирует перемещение |
Если какая-либо строка не выполняется, устраните проблему до отправки запроса. Переименование репозитория на стороне получателя или выбор другого целевого аккаунта — решения получателя, поэтому согласуйте их заранее, а не обнаруживайте конфликт в процессе переноса.
У шага принятия короткое окно
При переносе между личными аккаунтами получатель не является пассивной стороной. Ему нужно действовать:
При переносе на другой личный аккаунт получатель принимает приглашение по электронной почте, которое истекает через один день. Источник
Суточный срок действия — главный операционный риск в этом процессе. Если получатель находится в другом часовом поясе, в отпуске или просто не следит за почтой, приглашение может истечь, и перенос придётся начинать заново. Договоритесь о времени отправки, когда получатель на связи, и предупредите его, что сообщение придёт, чтобы оно не осталось непрочитанным.
Простой чек-лист принятия для владельца и получателя:
- Владелец: подтвердите права администратора, точный репозиторий для переноса и отсутствие у аккаунта получателя конфликта имени или сети форков.
- Получатель: подтвердите целевой аккаунт и проверьте те же конфликты со своей стороны.
- Оба: согласуйте окно отправки, когда получатель сможет ответить в течение дня.
- Владелец: отправьте запрос на перенос.
- Получатель: promptly примите приглашение по электронной почте и сообщите об этом.
- Владелец: убедитесь, что репозиторий теперь отображается под аккаунтом получателя, прежде чем что-либо делать со старым аккаунтом.
Не удаляйте аккаунт владельца, пока не подтверждён шаг 6. Старый аккаунт — единственное место, откуда можно повторно отправить неудавшийся или просроченный перенос.
Что происходит с публичными ссылками afterwards
Поведение ссылок — это то, что удивляет людей при переносе, потому что два вида ссылок ведут себя по-разному:
Ссылки на репозиторий после переноса перенаправляются, но связанные сайты GitHub Pages не перенаправляются; повторное использование старого расположения репозитория удаляет перенаправление репозитория. Источник
Это даёт чёткое разделение для аудита ссылок после переноса:
| Тип ссылки | После переноса | Необходимое действие |
|---|---|---|
| Ссылки на репозиторий, указывающие на старое расположение | Перенаправляются к новому владельцу | Обычно ничего; проверьте выборку |
| Сайт GitHub Pages, созданный из репозитория | Не перенаправляется | Обновите все опубликованные ссылки на сайт Pages |
| Старое расположение репозитория повторно используется кем-то другим | Перенаправление удаляется | Избегайте освобождения старого расположения; поддерживайте ссылки актуальными |
Третья строка — та, которую чаще всего упускают. Если старый путь репозитория позже будет использован повторно, перенаправление, которое незаметно прикрывало ваши старые ссылки, исчезнет. Относитесь к перенаправлению как к удобству во время миграции, а не как к постоянной гарантии, и обновляйте ссылки, которые вы контролируете, вместо того чтобы полагаться на него.
Чек-лист публичных ссылок после переноса
Выполните это после того, как получатель подтвердит право собственности, и до удаления аккаунта владельца:
- Откройте выборку ссылок на репозиторий из вашей документации, README и любого сайта, который ссылается на проект, и убедитесь, что они ведут к новому владельцу.
- Определите все сайты GitHub Pages, связанные с репозиторием, поскольку они не перенаправляются, и обновите опубликованные ссылки на них.
- Решите, что произойдёт со старым расположением репозитория, чтобы его не использовали повторно способом, который удаляет перенаправление.
- Проверьте ссылки из мест, которые вы не контролируете, например внешних обзоров или общих закладок, и отметьте, какие из них вы можете и не можете обновить.
- Держите аккаунт владельца активным, пока всё вышеперечисленное не будет сделано.
Миграция права собственности против смены имени пользователя
Перенос репозитория и смена имени пользователя профиля — отдельные задачи с отдельными рисками. Перенос касается того, кому принадлежит проект; смена имени пользователя касается публичной идентичности самого аккаунта. Если на самом деле вы хотите привести в порядок то, как выглядит ваш профиль, а не передать репозиторий, начните с руководства по имени пользователя: смена имени пользователя GitHub без оставления сломанных ссылок на профиль.
Если вы делаете и то, и другое, выстройте последовательность осознанно: сначала уладьте право собственности на репозиторий, подтвердите, что новый владелец может действовать независимо, и только затем меняйте или удаляйте старый аккаунт. Обратный порядок оставляет перенос зависимым от аккаунта, от которого вы уже отказались.
Где уместен поиск по имени пользователя, а где нет
Перед удалением аккаунта люди часто хотят знать, какие публичные следы старого имени пользователя остались в других местах. Поиск по имени пользователя может выявить совпадения публичных профилей на других платформах, что полезно как список ссылок, которые, возможно, нужно обновить. Это не инвентаризация аккаунтов, и совпадение не доказывает, что оба аккаунта принадлежат одному человеку. Относитесь к результатам как к местам для ручной проверки, а не как к подтверждению, что ссылка работает или что аккаунт принадлежит вам.
TraceSeek охватывает 3 000+ платформ и возвращает бесплатный первый скан за 20–30 секунд. Это может помочь составить чек-лист публичных профилей для проверки, но не подтверждает право собственности и не заменяет проверки переноса и ссылок выше. Сам перенос репозитория происходит на GitHub, а не в инструменте поиска.
Реалистичный порядок действий
- Решите, нужен ли вам перенос репозитория, смена имени пользователя или и то, и другое.
- Подтвердите права администратора, совместимость получателя и отсутствие конфликта имени или сети форков.
- Отправьте перенос, когда получатель сможет принять в течение дня.
- Убедитесь, что репозиторий находится под новым владельцем.
- Проведите аудит ссылок на репозиторий и отдельно — любых ссылок на GitHub Pages.
- Защитите старое расположение репозитория от повторного использования.
- Только после этого удаляйте аккаунт владельца.