Як перейменувати сховище 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.