Я создал папку common
с кучей исходных файлов и папок.
Теперь я хочу переместить common
папку в include
папку, чтобы она выглядела какinclude/common
Я попробовал это:
git add include
git mv common/ include/
но это не с этой ошибкой
фатальный: неверный источник, источник = myrepo / common, пункт назначения = myrepo / include
Я пытался,
git mv common/ include/common
но я получаю ту же ошибку
Есть идеи как этого добиться?
git mv
эквивалентно.должно сработать.
Со
git mv
страницы руководства :"
git add
" Не должно быть сделано до переезда.Примечание: "
git mv A B/
", еслиB
каталог не существует, должен выдавать ошибку, но это не так.Смотрите коммит c57f628 от Matthieu Moy (
moy
) для Git 1.9 / 2.0 ( первый квартал 2014 года):источник
git mv
выглядит гораздо лучше!Команда:
Обычно это работает нормально.
Ошибка «неверный источник ...» обычно указывает на то, что после последнего коммита в исходном каталоге были некоторые переименования, и, следовательно,
git mv
не удалось найти ожидаемый файл.Решение простое - просто зафиксируйте перед применением
git mv
.источник
Убедитесь, что вы добавили все свои изменения в область подготовки перед запуском
мерзавец терпит неудачу с ошибкой
если есть какие-то не добавленные файлы, то я просто узнал.
источник
Другой способ переместить все файлы в каталоге в подкаталог (ведет историю git):
$ for file in $(ls | grep -v 'subDir'); do git mv $file subDir; done;
источник
У меня была похожая проблема с тем,
git mv
где я хотел переместить содержимое одной папки в существующую папку, и в итоге я получил этот «простой» скрипт:объяснение
git ls-files
: Найти все файлы (вcommon
папке), проверенные в gitnewdir="../include/$(dirname $f)"; mkdir -p $newdir;
: Создайте новую папку внутриinclude
папки с той же структурой каталогов, что иcommon
git mv $f $newdir/$(basename "$f")
: Переместить файл во вновь созданную папкуПричиной для этого является то, что git, похоже, испытывает проблемы с перемещением файлов в существующие папки, и он также потерпит неудачу, если вы попытаетесь переместить файл в несуществующую папку (следовательно
mkdir -p
).Хорошая особенность этого подхода в том, что он касается только тех файлов, которые уже зарегистрированы в git. Просто используя
git mv
для перемещения всю папку, и папка содержит неустановленные изменения, git не будет знать, что делать.После перемещения файлов вы, возможно, захотите очистить хранилище, чтобы удалить оставшиеся неизмененные изменения - просто не забудьте выполнить пробный запуск!
источник
Извините, у меня недостаточно репутации, чтобы прокомментировать «ответ» «Andres Jaan Tack».
Я думаю, что мой messege будет удален ((Но я просто хочу предупредить "lurscher" и других, которые получили ту же ошибку: будьте осторожны, делая
Это может привести к тому, что вы не увидите историю изменений вашего проекта в новой папке.
я пытался
получил
я сделал
и
и я не вижу старую историю мерзавцев в моем проекте. По крайней мере, мой проект не потерян. Теперь у меня есть свой проект в newFolderName, но без истории (
Просто хочу предупредить, будьте осторожны, пользуясь советом "Andres Jaan Tack", если вы не хотите потерять свою игру.
источник
У меня была похожая проблема, но в папке, которую я хотел переместить, у меня были файлы, которые я не отслеживал.
скажем, у меня были файлы
И я хотел переместить только вложенные файлы в подпапку
subdir
, поэтому целью было:то, что я сделал, было:
mkdir tmpdir && mv a b tmpdir
git checkout a b
mkdir subdir && mv a b subdir
git add --update
смены каталога ): (обычно это добавит даже неотслеживаемые файлы - это потребует созданияgit add subdir
.gitignore
файла)git status
показывает теперь только перемещенные файлыmv tmpdir/* subdir
git status
похоже мы казнилиgit mv
:)источник
Я решил это на окнах, выполнив это:
(.*)
наgit mv ".\\\1" ".\\<New_Folder_Here>\"
источник