He creado una carpeta common
con un montón de archivos y carpetas de origen.
Ahora quiero mover la common
carpeta a la include
carpeta para que parezcainclude/common
Probé estos:
git add include
git mv common/ include/
pero falla con este error
fatal: mala fuente, fuente = myrepo / común, destino = myrepo / include
Lo intenté
git mv common/ include/common
pero me sale el mismo error
¿Alguna idea de cómo lograr esto?
git mv
es equivalente.Deberia trabajar.
Desde la
git mv
página del manual :No se
git add
debe hacer " " antes del traslado.Nota: "
git mv A B/
", cuandoB
no existe como directorio, debería producirse un error, pero no fue así.Ver commit c57f628 por Matthieu Moy (
moy
) para Git 1.9 / 2.0 (Q1 2014):fuente
git mv
parece un enfoque mucho mejor!Mando:
Por lo general funciona bien.
El error "fuente incorrecta ..." generalmente indica que después de la última confirmación hubo algunos cambios de nombre en el directorio fuente y, por
git mv
lo tanto , no puede encontrar el archivo esperado.La solución es simple: solo confirme antes de aplicar
git mv
.fuente
Asegúrese de haber agregado todos sus cambios al área de preparación antes de ejecutar
git falla con error
si hay archivos sin agregar, así que acabo de enterarme.
fuente
Otra forma de mover todos los archivos de un directorio a un subdirectorio (mantiene el historial de git):
$ for file in $(ls | grep -v 'subDir'); do git mv $file subDir; done;
fuente
Tuve un problema similar con el lugar
git mv
donde quería mover el contenido de una carpeta a una carpeta existente, y terminé con este script "simple":Explicación
git ls-files
: Encuentra todos los archivos (en lacommon
carpeta) registrados en gitnewdir="../include/$(dirname $f)"; mkdir -p $newdir;
: Cree una nueva carpeta dentro de lainclude
carpeta, con la misma estructura de directorios quecommon
git mv $f $newdir/$(basename "$f")
: Mueva el archivo a la carpeta recién creadaLa razón para hacerlo es que git parece tener problemas para mover archivos a carpetas existentes, y también fallará si intenta mover un archivo a una carpeta no existente (por lo tanto
mkdir -p
).Lo bueno de este enfoque es que solo toca archivos que ya están registrados en git. Simplemente usando
git mv
para mover una carpeta completa, y la carpeta contiene cambios no organizados, git no sabrá qué hacer.Después de mover los archivos, es posible que desee limpiar el repositorio para eliminar cualquier cambio restante no organizado, ¡solo recuerde ejecutar en seco primero!
fuente
Lo siento, no tengo suficiente reputación para comentar la "respuesta" de "Andres Jaan Tack".
Creo que mi mensaje se eliminará ((pero solo quiero advertir a "Lurscher" y otros que obtuvieron el mismo error: tenga cuidado al hacer
Puede causar que no vea el historial de git de su proyecto en una nueva carpeta.
lo intenté
tiene
yo hice
y
y no veo la vieja historia de git en mi proyecto. Al menos mi proyecto no está perdido. Ahora tengo mi proyecto en newFolderName, pero sin el historial (
Solo quiero advertir, tenga cuidado al usar el consejo de "Andres Jaan Tack", si no quiere perder su historia.
fuente
Tuve un problema similar, pero en la carpeta que quería mover tenía archivos que no estaba rastreando.
digamos que tenía archivos
Y quería mover solo los archivos rastreados a la subcarpeta
subdir
, por lo que el objetivo era:lo que hice fue:
mkdir tmpdir && mv a b tmpdir
git checkout a b
mkdir subdir && mv a b subdir
git add --update
con el truco de cambio de directorio ):git add subdir
(normalmente esto agregaría incluso los archivos no rastreados, esto requeriría crear el.gitignore
archivo)git status
muestra ahora solo archivos movidosmv tmpdir/* subdir
git status
parece que ejecutamosgit mv
:)fuente
Resolví esto en Windows haciendo esto:
(.*)
congit mv ".\\\1" ".\\<New_Folder_Here>\"
fuente