В комментариях есть, вероятно, тот ответ, который вам нужен:
git mv MyFolder/* .
с последующим удалением пустой папки.
Однако помните, что вы частично манипулирование файлами и папками в вашем рабочем дереве . Git не хранит то, что находится в вашем рабочем дереве; скорее, Git сохраняет то, что вы сказали Git, чтобы скопировать в Git index .
Это то, о чем постоянно работает git add
: каждый git add
, который вы запускаете, говорит Git: скопируйте это в индекс . Вы не можете работать непосредственно с файлами, которые находятся в индексе: они находятся в специальной Git -только форме. Вам нужны копии, с которыми вы можете работать. Git помещает их в ваше дерево работы. Но Git делает новые коммиты из индекса, а не из вашего рабочего дерева.
Файлы в индексе и в Git не в папках , У них просто длинные имена с косой чертой. То есть в индексе у вас есть MyFolder/file1
- это файл , папки нет, это просто файл с именем MyFolder/file1
- и MyFolder/file2
. Если вы делаете коммит сейчас, коммит будет иметь эти файлы, с такими же длинными именами.
Если и когда вы скажете Git извлечь некоторый коммит и в , который фиксирует, есть файл с именем super/calli/fragial/istic/expi/ali/docious
, Git может потребоваться указать вашему компьютеру , чтобы он создавал папки super
(в .
), calli
(в super
) и т. Д., Чтобы поместить файл с именем docious
. Git понимает, что ваш компьютер требует, чтобы файлы go помещались в папки, а не просто имели длинные имена. Git сделает эти папки по мере необходимости. Но Git никогда хранил папок! Он просто сохранил файл с длинным именем.
В любом случае, если вы используете git mv MyFolder/file1 file1
для переименования MyFolder/file
в file1
, так что ваш компьютер перемещает файл из этой папки Git теперь имеет имя file1
в индексе Git, и у вас есть файл с именем file1
в вашем рабочем дереве. Повторите для file2
и теперь предположительно MyFolder
пусто. Если у Git в индексе Git нет файлов, чье имя начинается с MyFolder/
, Git не будет делать каталог MyFolder
в вашем рабочем дереве. Но Git не будет удалять это тоже: вы должны сделать это самостоятельно.
(Поскольку индекс Git имеет файлы с именем file1
и file2
в нем сделанный вами следующий коммит будет содержать файлы с таким именем. текущий коммит по-прежнему содержит MyFolder/file1
и MyFolder/file2
. Если, в в будущем вы go вернетесь назад и извлечете этот коммит в свое рабочее дерево, Git создаст MyFolder/
, если потребуется.)