Измените расположение каталога Git-репозитория.

200

С Git / Github для Windows, если у меня есть репозиторий с этим каталогом: C:\dir1\dir2что мне нужно сделать, чтобы переместить файлы репо в C:\dir1? Очевидно, я могу физически копировать и вставлять файлы, но что мне нужно делать на стороне Git?

У меня есть этот репозиторий на GitHub, и я использую Git Bash и GitHub для Windows.

Микаэль Энгвер
источник
1
Посмотрите на этот ответ , это то же самое для перемещения в другую папку или другой компьютер.
rekenerd

Ответы:

234

Просто скопируйте все содержимое рабочего каталога (включая скрытый .gitкаталог). Это переместит весь рабочий каталог в новый каталог и не повлияет на удаленный репозиторий на GitHub.

Если вы используете GitHub для Windows, вы можете переместить хранилище, используя метод, описанный выше. Однако, когда вы щелкнете по хранилищу в приложении, оно не сможет найти его. Чтобы решить эту проблему, просто нажмите на синий кружок с!, Выберите «Найти» и затем перейдите в новый каталог.

т е р
источник
3
Но как насчет того, как GitHub For Windows отслеживает локальное репо? С этой стороны должен быть какой-то конфиг.
3
Когда я сделал это на Windows, это заставило меня создать новый репо.
472084
1
@Jleagle, возможно, они изменили его с момента публикации этого ответа. Я посмотрю и обновлю свой ответ, если это необходимо.
ctor
2
Он не должен просить вас создать новый репозиторий: если это произошло, вы явно пропустили git-файл (возможно, скрытый). Случилось со мной, и когда я попытался снова, я заметил, что я пропустил некоторые.
Хуан
1
Я на Win. После того, как я вручную переместил папку в новое место, я снова открыл приложение Git GUI и переместил туда папку проекта вручную. Таким образом, это работает для меня.
kuncevic.dev
42

Я не уверен в этом вопросе, поэтому вот два ответа:

Если вы хотите переместить свой репозиторий:

Просто скопируйте весь репозиторий (с его .gitкаталогом).

В структуре нет абсолютного пути, .gitи ничто не мешает его перемещению, поэтому после перемещения вам нечего делать. Все ссылки на github (см. В .git/config) будут работать как прежде.

Если вы хотите переместить файлы в хранилище:

Просто переместите файлы. Затем добавьте изменения, перечисленные в git status. Следующее commitсделает необходимое. Вы будете рады узнать, что ни один файл не будет продублирован: перемещение файла в git практически бесплатно.

Денис Сегюре
источник
1
Но как насчет того, как GitHub For Windows отслеживает локальное репо? С этой стороны должен быть какой-то конфиг.
@ user596075 это в .gitкаталоге.
OrangeDog
24

Если вы используете GitHub Desktop, то просто выполните следующие действия:

  1. Закрыть GitHub Desktopи все другие приложения с открытыми файлами по вашему текущему пути к каталогу.
  2. Переместите весь каталог, как указано выше, в новое местоположение каталога.
  3. Откройте GitHub Desktopи нажмите на синий (!) Значок «хранилище не найдено». Затем откроется диалоговое окно, и вы увидите кнопку «Найти ...», которая откроет всплывающее окно, позволяющее направить его путь к новому местоположению.
Микаэль Энгвер
источник
8

Хотя вопрос касается Git для Windows, это, кажется, лучший результат даже при поиске инструментов Visual Studio для Git (расширение в VS 2012, встроенная поддержка в VS 2013).

Используя приведенные выше решения в качестве руководства, я определил, что Visual Studio Git Tools делает перемещение репозиториев (или даже всю структуру каталогов для всех репозиториев) локально очень простым.

1) Закройте Visual Studio. 2) Переместите папку Repo в новое место. 3) Откройте Visual Studio. Откройте Team Explorer. Переключитесь на вид «Подключить» (значок штекера вверху). 3a) Если Repos все еще показывает старый путь, нажмите «Обновить» для принудительного обновления. 4) Репо, которые были перемещены локально, больше не должны отображаться в « Local Git Repositories ». 5) Нажмите « Добавить» (не новый или не клон) и выберите папку репо для добавления.

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

Пример: E: \ Repos \ RepoA E: \ Repos \ RepoB E: \ Repos \ RepoC

В Visual Studio Team Explorer [Добавить]> «E: \ Repos \»> [Добавить] вернет все три в локальные репозитории.

Джеральд Дэвис
источник
6

Хотя все предыдущие ответы, кажется, говорят, что вы можете просто переместить каталог, и в структуре .git нет абсолютных путей. Я обнаружил, что это не соответствует действительности при использовании git от Cygwin.

Когда я переместил свое git-репо (фактически я восстановил его из резервной копии, но на другой диск, так как структура моей системы изменилась в моей новой системе). Я получил сообщение об ошибке вроде

fatal: Invalid path '<part_of_the_original_repo_path>': No such file or directory

Я использовал grep, чтобы найти, что в моем файле .git / config в разделе [core] есть переменная рабочего дерева, которая содержит абсолютный путь к моему git-репо. Изменение этого исправило проблему для меня.

Фил Розенберг
источник
4

Я использую плагин Visual Studio git, и у меня есть несколько сайтов, работающих на IIS, которые я хотел переместить. Простой способ, который работал для меня:

  1. Закройте Visual Studio.

  2. Переместить код (включая папку git и т. Д.)

  3. Нажмите на файл решения в новом месте

Это обновляет сопоставление с новым местоположением, используя существующие локальные файлы git, которые были перемещены. Как только я вернулся в Visual Studio, мое окно Team Explorer показывало репозитории в новом месте.

Бен
источник
2

Я использую Github Desktop для Windows, и я хотел переместить местоположение хранилища. Нет проблем, если вы переместите свой каталог и выберите новое место в программном обеспечении. Но если вы установите плохую директорию, вы получите фатальную ошибку, и у вас не будет второго шанса переместиться в хорошую. Так что починить это. Вы должны скопировать файлы проекта в неверный каталог, выполнить его реконфигурацию с помощью Github Desktop, после чего вы можете снова переместить свой проект в другую папку и выполнить перемещение в программном обеспечении. Для этого не нужно закрывать Github Desktop, он будет проверять папки в режиме реального времени.

Надеюсь, это поможет кому-то.

Shim-Сан
источник
1

Это не сработало для меня. Я переместил репозиторий из (например) c: \ project1 \ в c: \ repo \ project1 \, и Git для windows не показывает никаких изменений.

Состояние git показывает ошибку, потому что один из подмодулей "не является хранилищем git" и показывает старый путь. например (имена изменены для защиты IP)

Неустранимый: Не Git-репозиторий: C: /project1/.git/modules/subproject/subproject2 Неустранимый: «Git Status --porcelain» не удалось в суб-модуле подпроекта

Мне пришлось вручную редактировать файлы .git в подмодулях, чтобы указать правильный относительный путь к репо подмодуля (в каталоге .git / modules основного репо)

Крис Оутс
источник
1

Репортаж из будущего: апрель 2018 г.

Я хотел нормализовать свои локальные репозитории на моем Mac и Windows, которые оказались в разных локальных папках.

Клиент Windows 10 заставил меня пройти процедуру «Не могу найти»> «Найти», утомительно, но не ужасно. Также необходимо обновить локальный «путь клонирования» в настройках для дальнейшего использования.

Когда я консолидировал папки Mac, клиент Github просто нашел их снова - мне не пришлось ничего делать!

Чарльз Росс
источник
0

Чтобы установить локальный путь по умолчанию для ваших репозиториев при каждом клонировании одного из них, вы должны клонировать репозиторий только один раз и установить Localpath: / your-path, затем github автоматически определит этот путь как ваш путь по умолчанию.

BOjack
источник
Похоже, это не отвечает первоначальному вопросу - возможно, вы можете уточнить, как ваш ответ добавляет что-то к уже принятому ответу? Спасибо.
rwp
0

Более подход, основанный на Git, заключается в внесении изменений в локальную копию с использованием cd или копированием и вставкой, а затем передавать эти изменения из локального в удаленное хранилище.

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

$ git add -A
#And commiting them
$ git commit -m "Relocating image demo files"
#And finally, push
$ git push -u local_repo -f HEAD:master

Надеюсь, поможет.

Пе Дро
источник