Git переместить файл в другую папку

Обновлено: 02.07.2024

DXARTS открыт с 9:00 до 17:00 по понедельникам, вторникам, четвергам и пятницам, а по средам доступен удаленно. Пожалуйста, свяжитесь с dxarts@uw.edu для любых неотложных потребностей.

Несколько советов по работе с репозиторием git.

Разделение подпапки на новый репозиторий

Экспериментирование с изменениями с использованием копии репозитория

  • Клонируйте репозиторий, чтобы получить локальную копию.
  • перейдите в корневой каталог репозитория
  • удалить пульт

Извлечение пульта гарантирует, что любые изменения, которые вы вносите в файлы и историю, не будут случайно переданы обратно на пульт.

Создание репозитория для заполнения контентом из другого репо

  • На Github создайте новый репозиторий, но не создавайте файл README, вы хотите, чтобы репозиторий был пустым.
  • Заполнив репозиторий новыми файлами или файлами, скопированными вместе с историей из другого репозитория, добавьте и зафиксируйте изменения.
  • затем отправить на удаленный компьютер (может потребоваться принудительная отправка: git push master origin -f).

Переименовывать или перемещать файлы или папки с сохранением истории и без нее

Перемещение или переименование папки (они эквивалентны) «Без истории»

Базовое переименование (или перемещение):

Переименование с учетом регистра, например. от с учетом регистра к с учетом регистра — необходимо выполнить два шага:

git mv с учетом регистра tmp
git mv tmp с учетом регистра

…с последующими фиксацией и отправкой.

git mv на самом деле сохраняет историю файла, но не очень полезным способом. Если вы посмотрите на историю этого нового старого файла на GitHub, вы на самом деле не увидите всю историю. т.е. История файла (или всех файлов, содержащихся в переименованном/перемещенном каталоге) будет отображаться только до этой фиксации переименования. Чтобы увидеть «прошлое» этой фиксации, вам нужно «следовать» за ней:

Поэтому, если вы хотите переименовать файл или каталог, вам нужно это сделать.

Переместить или переименовать файл, сохранив его историю

Примечание: следующая процедура перезапишет историю git. Вероятно, это не очень хорошая идея для репозиториев с несколькими участниками, убедитесь, что вы понимаете последствия, прежде чем продолжить.

Существует удобная утилита git-mv-with-history, которую вам нужно сохранить в папке ~/bin, чтобы вы могли запускать ее из командной строки.

Если приведенная выше ссылка на суть больше недоступна, скрипт также хранится здесь.

Убедитесь, что папка bin указана в PATH в Терминале:

Примечание. Это изменение является временным (работает только в текущем сеансе оболочки). Чтобы сделать его постоянным, добавьте строку в файл .bashrc, расположенный в вашем домашнем каталоге.

Загрузив скрипт git-mv-with-history и поместив его в папку ~/bin, выполните команду:

В этом примере показаны три разных типа операций, как описано в комментарии к каждой строке.

Примечание: имя фактической команды в описании скрипта неверно, команда в примере показана как "git-rewrite-history".

Переместить или переименовать папку, сохранив ее историю

Обратите внимание, что приведенный выше скрипт работает с отдельными файлами. Чтобы переименовать папку или переместить ее, это немного сложнее. Это громоздко, но этот способ проверен и работает: для переименования каталога вы в основном перемещаете файлы во временный каталог (переписывая историю), затем перемещаете файлы обратно в (переименованный или перемещенный) каталог, снова записывая историю .

Например, если у меня есть куча файлов в папке с именем "классы", и я хочу переименовать эту папку в "классы" (верхний регистр), это включает 2 операции:

<р>1. переместите все файлы во временную папку:

git-mv-with-history \
classes/RotaryView.sc=tmp/ \
classes/ValueView.sc=tmp/ \
classes/ValuesView.sc= tmp/

<р>2. переместите все файлы в новую папку с новым именем (она не обязательно уже существует, она будет создана, если она еще не существует)

git-mv-with-history \
tmp/RotaryView.sc=Classes/ \
tmp/ValueView.sc=Classes/ \
tmp/ValuesView.sc= Классы/

При отправке этих изменений на пульт вам, вероятно, потребуется выполнить принудительную отправку: git push master origin -f.

ВНИМАНИЕ: это переписывает историю репозитория, поэтому будьте осторожны, используя это, если другие также выполняют работу с репозиторием!

Скопировать файл или каталог из другого репозитория с сохранением истории

Это создает патч формата git для всей истории файла или подкаталога, который нам нужен, а затем импортирует его в целевой репозиторий.

В Терминале из вашего домашнего каталога:

git format-patch -o /tmp/mergepatchs $(git log $reposrc|grep ^commit|tail -1|awk '' )^..HEAD $reposrc

Это создает файл исправления, содержащий файл/каталог (и историю) всего, что вы установили как reposrc, который объединяется с вашим целевым репозиторием.

Обратите внимание, что если вы делаете это несколько раз, вам нужно будет удалять /tmp/mergepatchs после каждого запуска этого процесса,

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

При отправке этих изменений на пульт вам может потребоваться выполнить принудительную отправку: git push master origin -f.

Удаление файла или каталога и его истории из репозитория

Внимание: это переписывает историю репозитория (изменение хэшей коммитов и т. д.)

DIRECTORY_NAME/ следует заменить на nameOfYourDirectory/ или nameOfYourFile.txt (без косой черты в конце).

Вам нужно будет снова запустить этот полный процесс (после клонирования) для нескольких папок или файлов (т. е. вы не можете запустить команду git filter-branch несколько раз, чтобы накопить файлы или папки для удаления).

Вы можете проверить размер репозитория до и после gc с помощью:

Сбор вишни

git fetch upstream // выборка с вашего вышестоящего пульта

git checkout 3.10 // переключиться на вашу локальную ветку, в которую вы в конечном итоге захотите слить вишенку

git pull upstream 3.10 // обновить вашу локальную ветку любыми новыми изменениями с вышестоящего удаленного

git checkout -b cherry-213 // создать и проверить вашу новую ветку, чтобы вишневый выбор

git cherry-pick -m 1 // делаем самый лучший выбор

Теперь вы готовы опубликовать/отправить это на свой удаленный сервер и создать PR для вышестоящей удаленной ветки 3.10. Обратите внимание, что при создании PR с помощью GitHub вы можете выбрать, с какой веткой вы пытаетесь объединить свои изменения, и по умолчанию она может быть другой веткой, например master, но вы можете выбрать целевую ветку 3.10 из раскрывающегося списка.

Если вы выбираете только один или несколько коммитов, команда выглядит так:

Если вместо отдельных коммитов или единого слияния вам нужен диапазон коммитов, есть два варианта:

Первый хеш – это самая старая фиксация, а последняя – самая последняя. Первая версия выбирает диапазон коммитов, начиная с ebe6942 и заканчивая 905e279 включительно. Второй включает от ebe6942 до 905e279 включительно.

В этом уроке мы узнаем, как переместить файл в git. В git вы можете легко перемещать файл и каталог в текущий репозиторий git. Мы также можем использовать ту же команду для переименования файла.

Подпишитесь на мою страницу руководства по Git, чтобы узнать больше о git.

Переместить файл в Git

Начнем с того, как переместить файл в репозиторий git. Например, я собираюсь создать файловую структуру в текущем репозитории. Сначала я создам каталог в репозитории git с именем «data». Затем я перемещу туда свой файл test.txt.

Вот, если вы заметили, что файл перемещается в git:

  1. Файл text.txt удален.
  2. Теперь файл test.txt создан в каталоге данных.

Команда Git status покажет вам, что файл был перемещен.

Второй способ переместить файл в Git

Если вы не думаете об управлении версиями при перемещении файла, мы можем использовать простую команду Linux «mv» вместо команды «git mv».

Следуйте приведенной ниже простой команде, чтобы переместить файл в Git.

Зафиксировать каталог данных

Теперь просто зафиксируйте изменения в текущем репозитории git, а затем отправьте изменения в удаленный репозиторий git.

Отправить изменения в удаленный репозиторий git.

Как я могу переместить файл в Git?

Чтобы переместить файл в git, просто запустите команду «git mv» с именем файла. Например: git mv text.txt data и запустите git status, чтобы проверить статус файла.

Как я могу переместить папку в Git?

Запустите команду «git mv», чтобы переместить папку из одной папки в другую. Например:

  • данные mkdir
  • библиотека данных git mv
  • git rm -r данные
  • и git добавьте lib/data

Запустите команду git status, чтобы отобразить статус указанной выше команды.

Как я могу переместить файл .git?

Простым словом НЕТ. На практике не рекомендуется переименовывать и перемещать файл .git. Это будет вредно для вас.

Как я могу переместить локальный репозиторий git?

Да, мы можем переместить весь локальный репозиторий git, включая скрытый каталог .git. Ваш текущий локальный репозиторий git легко переместить в другое место в системе, и это не повлияет на наш удаленный репозиторий, например, на GitHub.

Как я могу переместить несколько файлов в Git?

Чтобы переместить несколько файлов в Git, просто запустите команду «git mv» с файлами по отдельности или просто используйте команду Linux mv и обновите индекс вручную. Например: git add -A.

Читайте также: