Измените расположение каталога хранилища Git.
С Git/Github для Windows, если у меня есть репозиторий с этим каталогом: C:\dir1\dir2
, что мне нужно сделать, чтобы переместить файлы репо на C:\dir1
? Я могу, очевидно, физически скопировать и вставить файлы, но что мне нужно сделать на стороне Git?
У меня есть это репо на GitHub, и я использую Git Bash и GitHub для Windows.
Ответы
Ответ 1
Просто скопируйте содержимое всего рабочего каталога (включая скрытый каталог .git
). Это переместит весь рабочий каталог в новый каталог и не повлияет на удаленный репозиторий на GitHub.
Если вы используете GitHub для Windows, вы можете переместить репозиторий с помощью метода, как указано выше. Однако при нажатии на репозиторий в приложении он не сможет его найти. Чтобы решить эту проблему, просто нажмите на синий круг с помощью!, Выберите "Найти", а затем перейдите в новый каталог.
Ответ 2
Я не уверен в этом вопросе, так что вот два ответа:
Если вы хотите переместить свой репозиторий:
Просто скопируйте весь репозиторий (с его каталогом .git
).
Абсолютный путь в структуре .git
отсутствует, и ничто не мешает ему перемещаться, поэтому вам нечего делать после перемещения. Все ссылки на github (см. .git/config
) будут работать по-прежнему.
Если вы хотите перемещать файлы внутри репозитория:
Просто переместите файлы. Затем добавьте изменения, перечисленные в git status
. Следующий commit
сделает необходимое. Вы с удовольствием узнаете, что файл не будет дублироваться: перемещение файла в git почти не требует затрат.
Ответ 3
Если вы используете GitHub for Windows
, выполните следующие действия:
- Закройте
GitHub for Windows
и все другие приложения с открытыми файлами в ваш текущий путь к каталогам.
- Переместите весь каталог, как указано выше, в новое расположение каталога.
- Откройте
GitHub for Windows
и щелкните значок синего (!) "хранилища не найден". Затем откроется диалоговое окно, и вы увидите кнопку "Найти", где вы можете переместить новый путь репозитория.
Ответ 4
В то время как вопрос включает в себя Git для Windows, это, по-видимому, является лучшим результатом даже при поиске Visual Studio Tools для Git (расширение в VS 2012, встроенная поддержка в VS 2013).
Используя приведенные выше решения в качестве руководства, я определил, что Visual Studio Git Tools делает перемещение репозиториев (или даже целую структуру каталогов для всех репозиториев) локально очень легко.
1) Закройте Visual Studio.
2) Переместите папку Repo в новое место.
3) Откройте Visual Studio. Откройте Team Explorer. Переключитесь в режим "Подключить" (значок вилки сверху).
3a) Если Repos все еще показывает старый путь, нажмите "Обновить", чтобы принудительно выполнить обновление.
4) Репозиции, перемещенные локально, больше не должны отображаться в "Локальных Git репозиториях".
5) Нажмите Добавить (не новый или клон) и выберите папку репо для добавления.
На шаге 5 вы действительно просто предоставляете путь поиска, и поиск автоматически включает все подпапки. Если у вас несколько репозиториев, организованных под одним корнем (независимые репозитории, имеющие только одну родительскую папку), то выбор родителя будет включать все найденные ниже репозитории.
Пример:
E:\Repos\RepoA
E:\Repos\RepoB
E:\Repos\RepoC
В Visual Studio Team Explorer [Добавить] > "E:\Repos \" > [Добавить] вернет все три в локальные репозитории.
Ответ 5
Я использую плагин Visual Studio git, и у меня есть некоторые веб-сайты, работающие на IIS, которые я хотел переместить. Простой способ, который работал у меня:
Это обновляет сопоставление с новым местоположением, используя существующие локальные файлы git, которые были перемещены. Когда я вернулся в Visual Studio, мое окно Team Explorer показало repos в новом месте.
Ответ 6
Это не сработало для меня. Я переместил репо из (например,) c:\project1\в c:\repo\project1\и Git для окон не отображается никаких изменений.
git статус показывает ошибку, потому что один из подмодулей "не является хранилищем Git" и показывает старый путь. например (имена изменены для защиты IP)
фатальный: не репозиторий Git: C:/project1/.git/modules/subproject/subproject2
фатальный: 'git status -porcelain' не удалось выполнить подпроект подмодуля
Мне пришлось вручную редактировать .git файлы в подмодулях, указывая на правильный относительный путь к репозиторию подмодуля (в основном каталоге репо .git/modules)