Я работаю над реорганизацией существующего проекта. У них была следующая странная структура.

src
-main
--app
---item
----src
-----Item.coffee
---other
----src
-----Other.coffee

Я хочу переместить все эти файлы в git, чтобы Item.coffee и т.д. Теперь находились под ...

src
-main
--app
---item
----Item.coffee
---other
----Other.coffee

Какая команда Bash/Git подходит для этого?

1 ответ1

2

Сколько файлов вы перемещаете? Если вы не говорите о десятках / сотнях / тысячах файлов, просто физически переместите файл - вручную, через графический интерфейс или с помощью команды mv - в новое место, и Git обнаружит тот факт, что файл был:

  1. Удалено из старого местоположения.
  2. Это новый файл в новом месте.

Поэтому, чтобы добавить новые файлы, просто сделайте git add * в корне вашего проекта после перемещения файлов, сделайте коммит, и Git обработает все остальное, в том числе отметив, что файл, который был в одном месте, теперь находится в другом.

И если вы как - то речь идет о десятках / сотни / тысячи файлов , то вам просто нужно будет что - то сценарий в Bash , чтобы переместить файлы , а затем сделать то же git add * и совершить процесс , и все должно быть хорошо.

Такой скрипт Bash должен работать для перемещения всех элементов, заканчивающихся расширением *.coffee на один каталог в дереве независимо от того, насколько глубоко он вложен:

find . -name '*.coffee' |\
  while read item_path
  do
    item_dirname=$(dirname "${item_path}");
    mv ${item_path} ${item_dirname}/..;
  done

PS: ни в коем случае нельзя использовать git rm для такой процедуры. Просто переместите файлы, используйте git add * чтобы добавить недавно перемещенные файлы, а затем выполните коммит Git, и все будет хорошо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .