Як перейменувати сховище Git?


433

git mvперейменовує файл або каталог у сховищі. Як перейменувати власне сховище Git?


1
Я намагався використовувати mvдля перейменування PROJ0.git в моєму `хості сховищ ', він працює. Але я не знаю, чи правильно це, я маю на увазі, дійсне.
— Янтао Сіє

5
Ваше питання добре. У Git є сховища, і вони можуть містити такі проекти, як проекти Eclipse, якщо ви вирішили розмістити свій проект у сховищі git. Якщо це те, чого ви хотіли, то подивіться, як це зробити в передній частині нижче.
— Danny Remington - OMS

3
gitсама по собі не передбачає вказівки назви сховища. Ім'я кореневого каталогу є єдиним джерелом істини, що стосується імені сховища. Цей .git/descriptionфайл використовується лише у деяких програмах, таких якGitweb
— Ujjwal Singh

Відповіді:


620

Існують різні можливі інтерпретації того, що мається на увазі під перейменуванням сховища Git: відображене ім’я, каталог сховища або ім’я віддаленого сховища. Кожен вимагає різних кроків для перейменування.

Відображається ім'я

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

  1. Редагувати, .git/descriptionщоб містити ім'я сховища.
  2. Збережіть файл.

Каталог сховищ

Git не посилається на ім'я каталогу, що містить сховище, як використовується git clone master child, тому ми можемо просто перейменувати його:

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

Віддалене сховище

Перейменуйте віддалений сховище наступним чином:

  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, і мені не довелося змінювати файл .git / description (у мене його немає). Відображене ім'я в графічному інтерфейсі змінилося після того, як я зробив останній крок скидання початкового коду.
— Джо Ернст

4
Люди продовжують згадувати .git / опис, але не згадуючи, які зміни ви насправді вкладаєте туди, щоб перейменувати репо
— програміст Unextraordinair

24

У сховищі Git немає імені. Ви можете просто перейменувати каталог, який містить ваше робоче дерево, якщо ви хочете.


7
Так, git repo має назву. Я отримав цю помилку після перейменування:$ git status fatal: Not a git repository: C:/xxx/.git/xxx fatal: git status --porcelain failed
— Sawny

@Sawny, я не бачу, що це стосується нічого.
— Тобу

19
Ви сказали, що git repo не має імені, але це неправда. Якщо ви використовуєте підмодулі та просто перейменовуєте папку, ви отримаєте помилки від git. Див stackoverflow.com/questions/9878860 / ...
— Sawny

6
Гаразд, має значення шлях підмодулю до сховища git. Це правда, але не стосується цього конкретного питання.
— Тобу

5
Звичайно, сховища мають назву. Дивіться нижче, як це змінити.
— Danny Remington - OMS

19

Перейменуйте PRJ0.gitна PROJ1.git, а потім відредагуйте змінну URL-адреси, що знаходиться у .git/configфайлі вашого проекту.


15

Наприклад, у новому сховищі після a $ git init, .git каталог буде містити файл .git / опис.

Як виглядає так:

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

Редагування цього в локальному сховищі не змінить його на віддаленому.


Відповідь Алекса Брауна включала вашу.
— Янтао Сіє

13

Якщо ви мали намір перейменувати своє сховище, перейдіть до його сховища та натисніть «адміністратор», а потім перейменуйте.

Як тільки ви побачите червоне поле, яке попереджає вас про деякі падаючі на небо та інші речі, перейдіть до цього питання .


12
Може допомогти іншим зазначити, що це специфічна для Github пропозиція, і вона не стосується Git взагалі.
— знайденадрама

1
станом на січень 2013 року інструкції github мають бути такими: (увійдіть у систему github), перейдіть до репортажу, перейдіть до «Налаштування» >> «Параметри» та шукайте там кнопку Перейменувати. Щодо червоних попереджень про те, що відбувається погано, Droogans посилається на інше, тому питання все ще настійно рекомендується.
— пестофаг

12

Щоб перейменувати будь-яке сховище вашого облікового запису GitHub:

  1. Перейдіть до того конкретного сховища, яке ви хочете перейменувати
  2. Перейдіть на вкладку налаштувань
  3. Там, у розділі імені сховища, введіть нове ім’я, яке потрібно поставити, та натисніть Rename

Не питання про GitHub, це про git.
— robrecord

10

Якщо ви використовуєте GitLab або GitHub, ви можете змінити ці файли графічно.

Використання GitLab

Перейдіть у Налаштування проекту . Там ви можете змінити назву проекту, і найголовніше, ви можете перейменувати своє сховище (саме тоді ви почнете потрапляти в розділ небезпеки).

Після цього конфігурації локальних клієнтів повинні бути оновлені за допомогою

git remote set-url origin sshuser@gitlab-url:GROUP/new-project-name.git

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) У затемненні : Видаліть усі проекти, що знаходяться у сховищі, але обов'язково НЕ поставте прапорець "Видалити вміст з файлової системи". (Проект більше не повинен містити правильного розташування вмісту файлової системи, щоб дані не могли бути видалені ні в якому разі, але краще бути безпечним, ніж вибачте.)

6) У затемненні : у меню виберіть параметр Файл | Імпорт ....

7) В Eclipse : у діалоговому вікні відкрийте папку "Git", виберіть "Projects from Git" та натисніть "Далі".

8) В Eclipse : У діалоговому вікні виберіть "Local" та натисніть "Next".

9) В Eclipse : У діалоговому вікні натисніть кнопку "Додати ...".

10) В Eclipse : У діалоговому вікні переконайтесь, що прапорець поруч із сховищем встановлено, і натисніть «Готово».

11) У Eclipse : у діалоговому вікні виберіть сховище та натисніть «Далі».

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

13) В Eclipse : У діалоговому вікні встановіть прапорець поруч із проектами, над якими потрібно працювати, і натисніть «Готово».

14) У Eclipse : Перейменуйте будь-які проекти, що знаходяться у сховищі, якщо це потрібно. (Для узгодженості між Eclipse та файловою системою дайте їм те саме ім'я, що і каталог / папка проекту всередині каталогу / папки сховища.)


+1 (розвеселений і не здивований 14 кроків, необхідних для цього в Eclipse, особливо "якщо ви встановили Egit", що спричинить ще кілька десятків кроків ...)
— Джек Уейсі

7

У самій Git немає жодного положення, щоб вказати назву сховища. Ім’я кореневого каталогу є єдиним джерелом істини, що стосується імені сховища.

.git/descriptionХоча використовується тільки деякими додатками, такими як GitWeb .



4

Щоб бути простим, просто видаліть проект Eclipse (не вибирайте вміст на диску), а потім знову імпортуйте проект.

Eclipse визначить проект, підключений до Git, і поставить його в перспективу Git.

Це працює як шарм.


5
Це не відповідає на початкове запитання.
— mjuarez

Чи є ця відповідь коментарем для Danny Remington - відповідь OMS ?
— Пітер Мортенсен

4

З Github як ваш віддалений

Перейменування віддаленого репо на Github

Що стосується віддаленого сховища, якщо ви використовуєте Github або Github Enterprise як місце розташування сервера для віддаленого збереження / розповсюдження вашого сховища, ви можете просто перейменувати сховище безпосередньо в налаштуваннях репо.

На головній сторінці репо, вкладка налаштувань знаходиться праворуч, а ім'я репо - перший елемент на сторінці:

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

Github перенаправить запити на нову URL-адресу

Одна дуже приємна особливість у Github, коли ви перейменовуєте репо, - це те, що Github збереже старе ім’я репо та всі пов’язані URL-адреси та перенаправить трафік на нові URL-адреси. . Оскільки ваше ім’я користувача / org та ім'я репо є частиною URL-адреси, перейменування змінить URL-адресу.

Оскільки Github зберігає старе ім'я репо та переспрямовує запити на нові URL-адреси, якщо хтось використовує посилання, засновані на старому імені repo, намагаючись отримати доступ до питань, вікі, зірок чи послідовників, вони все одно прибуватимуть у нове місце на веб-сайті Github. Github також перенаправляє команди Git нижнього рівня, наприклад git clone,git fetch і т.д.

Більш детальна інформація знаходиться в довідці Github про перейменування Repo

Перейменування локальної назви Repo

Як уже згадували інші, локальне "ім'я" вашого репо-файлу, як правило, вважається кореневою папкою / ім'ям каталогу, і ви можете змінити це, перемістити або скопіювати папку в будь-яке місце, і це взагалі не вплине на репо.

Git покликаний турбуватися лише про файли всередині кореневої папки.


"якщо хтось використовує посилання на основі старої назви репо ... вони все одно прибуватимуть у нове місце на веб-сайті Github". Так, є така особливість. Те саме стосується BitBucket: community.atlassian.com/t5/Bitbucket-questions/… . Було б непогано знати, як повністю знищити будь-які посилання на стару назву, адже це, наскільки я розумію, це не перейменування, а копіювання. Було б добре знати правильну процедуру повного перейменування (із знищенням усіх старих речей).
— Олександр Самойлов

@AlexanderSamoylov Я просто здогадуюсь тут, але я щиро сумніваюся, що все збережено у старому форматі. Github повинен просто зберігати заздалегідь збережене ім'я старого архіву та перенаправляти будь-який трафік, який надходить на ім'я старого архіву, на нове ім'я архіву. тобто https://github.com/oldrepo/some_pathбуде просто переспрямовано туди https://github.com/newrepo/some_path, куди все було переміщено. Єдиним недоліком має бути те, що старе ім'я репо є назавжди зарезервованим, тому воно не може бути використане повторно (також добре уникати людей, які зберегли старий URL-адресу).
— LightCC


2
  1. Перейдіть до віддаленого хоста (наприклад, https://github.com/<User>/<Project>/ ).
  2. Перейдіть на вкладку Налаштування .
  3. Перейменуйте під назвою сховища (і натисніть кнопку Rename).

0

Відкрийте сховище git у браузері, потрапивши до "Налаштування", ви можете побачити кнопку перейменування.

Введіть нове "Назва сховища" та натисніть кнопку "Перейменувати".


0

Чи намагаєтесь ви замість назви свого проекту змінити package.jsonта виконати команду, git initщоб замість цього знову реалізувати існуючий Git?

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.