Изменить имя каталога в репозитории Github удаленно, напрямую из локального Linux Git?

10

Это мой репозиторий Git:

https://github.com/benqzq/ulcwe

Он имеет имя dir, localи я хочу изменить его имя на другое имя (скажем, с localна xyz).

Изменение его с помощью графического интерфейса пользователя GitHub - это кошмар, так как мне приходится менять имя каталога для каждого файла отдельно (GitHub еще не включил функцию «Переименование каталога», хотите верьте, хотите нет).

После установки Git я попробовал эту команду:

git remote https://github.com/benqzq/ulcwe && git mv local xyz && exit

Несмотря на то, что я не получил никакой подсказки для моего пароля GitHub, я получил эту ошибку:

fatal: Not a git repository (or any parent up to mount point /mnt/c)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

Я знаю, что весь смысл в Git состоит в том, чтобы загрузить проект, изменить, протестировать и затем отправить его на хостинг-провайдера (в данном случае GitHub), но чтобы просто изменить каталог, мне нужна прямая операция. Это возможно даже с Git?

Должен ли я использовать другую программу, может быть?

user9303970
источник
2
Нет, прямые удаленные операции в Git невозможны. Вы должны клонировать (загрузить) проект, изменить его, а затем отправить обратно хостинг-провайдеру. Но как вы вообще используете Github, не имея проекта на своем компьютере? Вносите ли вы все изменения через веб-интерфейс Github - это не очень удобно и не эффективно.
user253751
В этом конкретном случае использование пользовательского интерфейса обычно довольно удобно и эффективно для меня, главное, что я пропускаю, это прямое изменение имени dir ...
user9303970

Ответы:

28

Фатальное сообщение об ошибке указывает на то, что вы работаете откуда-то, что не является клоном вашего репозитория git. Итак, начнем с клонирования репозитория git:

git clone https://github.com/benqzq/ulcwe.git

Затем введите его:

cd ulcwe

и переименуйте каталог:

git mv local xyz

Для того, чтобы изменение было доступным, вам нужно его зафиксировать:

git commit -m "Rename local to xyz"

Теперь вы можете отправить его в свой удаленный репозиторий git:

git push

и вы увидите изменения в интерфейсе GitHub.

Стивен Китт
источник
14
Другими словами, это как любая другая операция с файлами в вашем Git-репозитории.
Гонки
2
@LightnessRacesinOrbit asker, кажется, использует веб-интерфейс для всех своих изменений до сих пор.
user253751
5

Нет, нет способа сделать это как прямую операцию из-за структуры git.

Способ работы git заключается в том, что он сохраняет копию всего хранилища, включая всю историю, в каждом месте.

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

Изменения отслеживаются как коммиты. Я предполагаю, что под этим direct operationвы подразумеваете способ изменения имени папки без создания коммита. Хотя это возможно путем переписывания истории, я не рекомендовал бы это, особенно если есть несколько человек / машин с копиями git-репо, поскольку это может привести к несоответствиям.

Самый простой способ переименовать папку в git-репо - это клонировать ее локально

git clone [url]
cd [git-folder]

Если у вас уже есть локальная копия репо, потяните ее, чтобы убедиться, что вы в курсе удаленного репо

git pull

Внесите необходимые изменения локально

git mv local xyz

Который должен автоматически добавляться в область подготовки github. Затем вы должны зафиксировать и подтолкнуть эти изменения.

git commit -m 'Renamed local to xyz'
git push

Это зафиксирует изменения в вашем локальном хранилище, а затем отправит эти изменения в удаленную копию хранилища, в данном случае, Github.

Matt
источник
8
Нет, история не сохраняется как изменения между коммитами, каждый коммит самоподдерживающийся. Изменения между коммитами пересчитываются по запросу каждый раз, когда они необходимы.
Стивен Китт
3
"вся история загружается в каждое место" - не с помощьюgit clone --depth
user11153
2
Для этого переписывание истории не потребуется - GitHub может просто сгенерировать коммит, сделав это. (Как и при редактировании файлов непосредственно на сайте.)
user1686