¿Cambiar un nombre de directorio en un repositorio de Github de forma remota, directamente desde Linux Git local?

10

Este es mi repositorio Git:

https://github.com/benqzq/ulcwe

Tiene un directorio llamado localy quiero cambiar su nombre a otro nombre (por ejemplo, de locala xyz).

Cambiarlo a través de la GUI de GitHub manualmente es una pesadilla ya que tengo que cambiar el nombre del directorio para cada archivo por separado (GitHub aún no ha incluido una funcionalidad de "cambio de nombre del directorio", lo creas o no).

Después de instalar Git, probé este comando:

git remote https://github.com/benqzq/ulcwe && git mv local xyz && exit

Si bien no recibí ningún mensaje para mi contraseña de GitHub, recibí este error:

fatal: Not a git repository (or any parent up to mount point /mnt/c)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

Sé que el objetivo de Git es descargar un proyecto, cambiarlo, probarlo y luego enviarlo al proveedor de alojamiento (GitHub en este caso), pero solo para cambiar un directorio, deseo una operación directa. ¿Es posible incluso con Git?

¿Debería usar otro programa tal vez?

usuario9303970
fuente
2
No, las operaciones remotas directas no son posibles en Git. Debe clonar (descargar) el proyecto, cambiarlo y luego regresar al proveedor de alojamiento. Pero, ¿cómo estás usando Github sin tener el proyecto en tu computadora? ¿Está haciendo todos los cambios a través de la interfaz de usuario web de Github? Eso no suena muy conveniente o eficiente.
user253751
En este caso particular, utilizando la interfaz de usuario suele ser bastante conveniente y eficiente para mí, el principal miss cosa que es el cambio de nombre dir directa ...
user9303970

Respuestas:

28

El mensaje de error fatal indica que estás trabajando desde un lugar que no es un clon de tu repositorio git. Entonces, comencemos clonando el repositorio git primero:

git clone https://github.com/benqzq/ulcwe.git

Luego ingrésalo:

cd ulcwe

y renombra el directorio:

git mv local xyz

Para que el cambio sea compartible, debe confirmarlo:

git commit -m "Rename local to xyz"

Ahora puede empujarlo a su repositorio remoto de git:

git push

y verá el cambio en la interfaz de GitHub.

Stephen Kitt
fuente
14
En otras palabras, es como cualquier otra operación en los archivos en su repositorio Git.
ligereza corre en órbita
2
@LightnessRacesinOrbit el autor de la pregunta parece haber estado usando la interfaz de usuario web para todos sus cambios hasta el momento.
user253751
5

No, no hay forma de hacerlo como una operación directa debido a la forma en que está estructurado git.

La forma en que funciona git es que almacena una copia de todo el repositorio, incluido todo el historial, en cada ubicación.

Github, Bitbucket o cualquier otro proveedor de alojamiento es esencialmente una copia más de su repositorio git, con una bonita interfaz web en la parte superior, que se trata como una fuente central de verdad en la mayoría de los flujos de trabajo, sin embargo, la utilidad git no lo sabe.

Los cambios se rastrean como confirmaciones. Supongo que por direct operation, te refieres a una forma de cambiar el nombre de la carpeta sin crear una confirmación. Si bien esto es posible reescribiendo el historial, no lo recomendaría, especialmente si hay varias personas / máquinas con copias del repositorio git, ya que esto puede generar inconsistencias.

La forma más fácil de cambiar el nombre de una carpeta en un repositorio de git sería clonarla localmente

git clone [url]
cd [git-folder]

Si ya tiene una copia local del repositorio, extráigala para asegurarse de que está actualizado con el repositorio remoto

git pull

Realice los cambios que necesita localmente

git mv local xyz

Que github debería agregar automáticamente al área de preparación. Entonces debe comprometerse e impulsar estos cambios.

git commit -m 'Renamed local to xyz'
git push

Esto confirmará el cambio en su repositorio local, luego empujará estos cambios a la copia remota del repositorio, en este caso, Github.

Mate
fuente
8
No, el historial no se almacena como cambios entre confirmaciones, cada confirmación es autosuficiente. Los cambios entre confirmaciones se vuelven a calcular a pedido cada vez que se necesitan.
Stephen Kitt
3
"todo el historial se descarga en cada ubicación" - no congit clone --depth
user11153
2
La reescritura del historial no sería necesaria para esto: GitHub podría generar una confirmación al hacerlo. (Justo como ya lo hace al editar archivos directamente en el sitio web).
usuario1686
0

Es posible cambiar el nombre de un directorio sin clonar el repositorio, utilizando la API de GitHub. No conozco ninguna implementación.

Fuente: /programming//a/31567094/370786

Rolf
fuente