Как переименовать репозиторий Git?

435

git mvпереименовывает файл или каталог в хранилище. Как переименовать репозиторий Git?

Янтао Се
источник
1
Я попытался использовать mvдля переименования PROJ0.git в моем "хосте репозиториев", это работает. Но я не знаю, правильно ли это, я имею в виду, действительно.
Янтао Се
5
Ваш вопрос в порядке. В Git есть репозитории, и они могут содержать проекты, подобные проектам Eclipse, если вы решите поместить свой проект в репозиторий git. Если это то, что вы хотели, то посмотрите, как это сделать, в ответе ниже.
Дэнни Ремингтон - OMS
3
gitсам по себе не имеет возможности указать имя хранилища. Имя корневого каталога является единственным источником правды, относящимся к имени хранилища. .git/descriptionФайл , хотя используется только некоторыми приложениями , какGitweb
Ujjwal Сингх

Ответы:

620

Существуют различные возможные толкования того, что подразумевается под переименованием репозитория Git: отображаемое имя, каталог репозитория или имя удаленного репозитория. Каждый требует разных шагов для переименования.

Отображаемое имя

Переименуйте отображаемое имя (например, показано как gitweb):

  1. Изменить, .git/descriptionчтобы содержать имя хранилища.
  2. Сохраните файл.

Справочник репозитория

Git не ссылается на имя каталога, содержащего репозиторий, как оно используется git clone master child, поэтому мы можем просто переименовать его:

  1. Откройте командную строку (или окно файлового менеджера).
  2. Перейдите в каталог, содержащий каталог репозитория (т. Е. Не заходите в сам каталог репозитория).
  3. Переименуйте каталог (например, с помощью mvкомандной строки или F2горячей клавиши из графического интерфейса).

Удаленный репозиторий

Переименуйте удаленный репозиторий следующим образом:

  1. Перейдите на удаленный хост (например, https://github.com/User/project. ).
  2. Следуйте инструкциям хоста для переименования проекта (будет отличаться от хоста к хосту, но обычно Настройки - хорошая отправная точка).
  3. Перейдите в локальный каталог репозитория (т. Е. Откройте командную строку и перейдите в каталог репозитория).
  4. Определите новый URL (например, git@github.com:User/project-new.git )
  5. Установите новый URL с помощью Git:

    git remote set-url origin git@github.com:User/project-new.git
    
Алекс Браун
источник
3
Во втором случае, что случится с тем, кто уже клонировал хранилище?
Фредерико Шардонг
3
Ничего плохого. Они сохраняют исходное имя, но их пульт теперь неверен: если они хотят получать обновления, им нужно подключиться к новому имени. Если и вы, и они синхронизируются, или центральное хранилище, оно сохранит исходное имя, и все продолжит работать
Алекс Браун
14
Обратите внимание, что утверждение «git не ссылается на это имя каталога» во втором случае неверно, если вы используете подмодули: git использует абсолютный путь для ссылки на подмодули, поэтому переименование вашего каталога репозитория сломает подмодули. См. Stackoverflow.com/questions/10144149/…
Эдвард
Я использую GitHub для Windows GUI, и мне не пришлось изменять файл .git / description (у меня его нет). Отображаемое имя в графическом интерфейсе изменилось после того, как я сделал последний шаг сброса источника.
Джо Эрнст
4
Люди продолжают упоминать .git / description, но без упоминания о том, какие изменения вы фактически
внесли
24

Репозиторий Git не имеет имени. Вы можете просто переименовать каталог, содержащий ваше рабочее дерево, если хотите.

Tobu
источник
7
Да, у git-репо есть имя. Я получил эту ошибку после переименования:$ git status fatal: Not a git repository: C:/xxx/.git/xxx fatal: git status --porcelain failed
Sawny
@ Сонни, я не вижу, что это имеет отношение к чему-либо.
Тобу
19
Вы сказали, что у git-репо нет названия, но это не так. Если вы используете субмодули и просто переименовываете папку, вы получите ошибки от git. См stackoverflow.com/questions/9878860/...
Sawny
6
Хорошо, путь субмодуля в репозитории git имеет значение. Это правда, но не имеет отношения к этому конкретному вопросу.
Тобу
5
Конечно, у репозиториев есть имя. Смотрите ниже, как это изменить.
Дэнни Ремингтон - OMS
19

Переименуйте PRJ0.gitв PROJ1.git, затем отредактируйте переменную URL, расположенную в .git/configфайле вашего проекта.

Alex
источник
15

В новом репозитории, например, после a $ git init, каталог .git будет содержать файл .git / description.

Который выглядит так:

Unnamed repository; edit this file 'description' to name the repository.

Редактирование этого в локальном хранилище не изменит его на удаленном.

mholm815
источник
Ответ Алекса Брауна включал ваш.
Янтао Се
13

Если вы хотели переименовать свой репозиторий, перейдите в свой репозиторий и нажмите «admin», затем переименуйте.

Как только вы увидите красную коробку, предупреждающую вас о падении неба и других вещах, прочитайте этот вопрос .

Droogans
источник
12
Может помочь другим заметить, что это предложение, относящееся к Github, и не относится к Git в целом.
Founddrama
1
по состоянию на январь 2013 года инструкции github теперь должны быть: (войдите в github), перейдите в репозиторий, затем перейдите в «Настройки» >> «Параметры» и найдите там кнопку «Переименовать». Что касается красных предупреждений о том, что происходит что-то плохое, Droogans ссылаются на других, поэтому вопрос все еще настоятельно рекомендуется.
Пестофаг
12

Чтобы переименовать любой репозиторий вашей учетной записи GitHub:

  1. Перейдите в тот конкретный репозиторий, который вы хотите переименовать
  2. Перейдите на вкладку настроек
  3. Там в разделе имени репозитория введите новое имя, которое вы хотите поместить, и нажмите Rename
Неха Кумари
источник
Не вопрос GitHub, речь идет о Git.
Робокорд
10

Если вы используете GitLab или GitHub, вы можете изменить эти файлы графически.

Использование GitLab

Зайдите в настройки своего проекта . Там вы можете изменить имя проекта и, что наиболее важно, вы можете переименовать свой репозиторий (это когда вы начинаете попадать в раздел опасности).

Как только это будет сделано, конфигурации локальных клиентов должны быть обновлены с помощью

git remote set-url origin sshuser@gitlab-url:GROUP/new-project-name.git
avi.elkharrat
источник
9
  • На стороне сервера просто переименуйте репозиторий с помощью команды mv как обычно:

    mv oldName.git newName.git
    
  • Затем на стороне клиента измените значение [remote "origin"]URL на новый:

    url=example.com/newName.git
    

Это сработало для меня.

пульки
источник
8

Если вы находитесь в Eclipse и установили Egit, вы можете переименовать репозиторий, содержащий проект, выполнив следующие действия:

1) В Eclipse : закройте все проекты, которые находятся в хранилище.

2) В файловой системе : найдите каталог / папку, в которой находится хранилище.

3) В файловой системе : переименуйте каталог / папку, в которой находится хранилище.

4) В файловой системе : откройте каталог / папку, в которой находится хранилище, и переименуйте каталог / папку проекта любого проекта, который вы собираетесь переименовать, чтобы он совпадал с новым именем проекта. (Это не обязательно, но обеспечивает согласованность между именем проекта в Eclipse и каталогом / папкой проекта в хранилище.)

5) В Eclipse : Удалить все проекты , которые находятся в хранилище , но быть уверены, что НЕ проверяют «Удалить содержимое из файловой системы» флажок. (В проекте больше не должно содержаться правильное расположение содержимого файловой системы, поэтому данные ни в коем случае нельзя удалять, но лучше быть в безопасности, чем потом сожалеть.)

6) В Eclipse : в меню выберите опцию File | Import ...

7) В Eclipse : в диалоговом окне откройте папку «Git», выберите «Проекты из Git» и нажмите «Далее».

8) В Eclipse : в диалоговом окне выберите «Local» и нажмите «Next».

9) В Eclipse : в диалоговом окне нажмите кнопку «Добавить ...».

10) В Eclipse : в диалоговом окне убедитесь, что установлен флажок рядом с хранилищем, и нажмите «Готово».

11) В Eclipse : в диалоговом окне выберите репозиторий и нажмите «Далее».

12) В Eclipse : в диалоговом окне выберите переключатель «Импорт существующих проектов», выберите «Рабочий каталог» и нажмите «Далее».

13) В Eclipse : в диалоговом окне установите флажок рядом с проектами, над которыми вы хотите работать, и нажмите «Готово».

14) В Eclipse : переименуйте любые проекты, которые находятся в хранилище, если это необходимо. (Для согласованности между Eclipse и файловой системой присвойте им то же имя, что и в каталоге / папке проекта внутри каталога / папки репозитория.)

Дэнни Ремингтон - OMS
источник
+1 (удивлен и не удивлен 14 шагами, необходимыми для этого в Eclipse, особенно «если вы установили Egit», что влечет за собой еще несколько десятков шагов ...)
Джек Уэйси,
7

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

.git/descriptionХотя используется только некоторыми приложениями, такими как GitWeb .

Уджвал Сингх
источник
5

Для пользователей Amazon AWS codecommit ,

aws codecommit update-repository-name --old-name MyDemoRepo --new-name MyRenamedDemoRepo

Ссылка: здесь

крайность
источник
4

Проще говоря, просто удалите этот проект Eclipse (не выбирайте содержимое на диске), а затем повторно импортируйте проект снова.

Eclipse определит проект, связанный с Git, и отобразит его в перспективе Git.

Работает как часы.

Ричард
источник
5
Это не отвечает на оригинальный вопрос.
mjuarez
Является ли этот ответ комментарием для Дэнни Ремингтона - ответ OMS ?
Питер Мортенсен
4

С Github в качестве пульта дистанционного управления

Переименование удаленного репо на Github

Что касается удаленного хранилища, если вы используете Github или Github Enterprise в качестве расположения сервера для удаленного сохранения / распространения хранилища, вы можете просто переименовать хранилище непосредственно в настройках хранилища.

На главной странице репо вкладка настроек находится справа, а имя репо является первым элементом на странице:

введите описание изображения здесь

Github перенаправит запросы на новый URL

Одна очень приятная особенность Github при переименовании репо - это то, что Github сохранит старое имя репо и все связанные URL-адреса и перенаправит трафик на новые URL-адреса . Поскольку ваше имя пользователя / организации и имя репо являются частью URL, переименование изменит URL.

Поскольку Github сохраняет старое имя репо и перенаправляет запросы на новые URL-адреса, если кто-либо использует ссылки на основе старого имени репо при попытке получить доступ к проблемам, вики, звездам или подписчикам, он все равно попадет в новое место на веб-сайте Github. Github также перенаправляет команды Git более низкого уровня, такие как git clone, git fetchи т. Д.

Больше информации в Github Help для переименования репо

Переименование названия локального репо

Как уже упоминали другие, локальное «имя» вашего репо обычно считается именем корневой папки / каталога, и вы можете изменить его, переместить или скопировать папку в любое место, и это никак не повлияет на репо.

Git предназначен для работы только с файлами внутри корневой папки.

LightCC
источник
«если кто-то использует ссылки, основанные на старом имени репо ... они все равно придут в новое место на сайте Github». Да, такая функция есть. То же самое относится и к BitBucket: community.atlassian.com/t5/Bitbucket-questions/… . Было бы неплохо знать, как полностью уничтожить любые ссылки на старое имя, потому что, насколько я понимаю, это не переименование, а копирование. Было бы неплохо узнать правильную процедуру для полного переименования (с уничтожением всех старых вещей).
Александр Самойлов
@AlexanderSamoylov Я просто догадываюсь здесь, но я искренне сомневаюсь, что что-то сохраняется в старом формате. Github должен просто сохранять старое имя архива зарезервированным и перенаправлять весь трафик, который приходит со старого имени архива, на новое имя архива. т.е. https://github.com/oldrepo/some_pathпросто перенаправит туда https://github.com/newrepo/some_path, куда все было перемещено. Единственным недостатком должно быть то, что старое имя репо зарезервировано навсегда, поэтому его нельзя использовать повторно (также полезно избегать доступа к нему людей, которые сохранили старый URL).
LightCC
3

Главное изменение имени здесь (img 1), но также измените readme.md (img 2)

введите описание изображения здесь

введите описание изображения здесь

ASH
источник
7
Вопрос скорее о git, чем о github.
Янтао Се
не переименовывать, как это
Манджита Тешара
2
  1. Перейдите на удаленный хост (например, https://github.com/<User>/<Project>/ ).
  2. Нажмите вкладку Настройки .
  3. Переименуйте под именем репозитория (и нажмите кнопку Rename).
Акулич
источник
0

Откройте в браузере git-репозиторий, перейдите в «Настройки», вы можете увидеть кнопку переименования.

Введите новое «Имя хранилища» и нажмите кнопку «Переименовать».

bshr
источник
0

Вы пытались изменить имя вашего проекта package.jsonи выполнить команду git initдля повторной инициализации существующего Git?

Ваша существующая история Git все еще будет существовать.

priyabagus
источник