Changer un nom de répertoire dans un référentiel Github à distance, directement depuis Linux Git local?

10

Voici mon dépôt Git:

https://github.com/benqzq/ulcwe

Il a un répertoire nommé localet je veux changer son nom en un autre nom (disons, de localà xyz).

Le changer manuellement via l'interface graphique de GitHub est un cauchemar car je dois changer le nom du répertoire pour chaque fichier séparément (GitHub n'a pas encore inclus une fonctionnalité "Renommer le répertoire", croyez-le ou non).

Après avoir installé Git, j'ai essayé cette commande:

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

Bien que je n'ai reçu aucune invite pour mon mot de passe GitHub, j'ai eu cette erreur:

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

Je sais que tout l'intérêt de Git est de télécharger un projet, de le modifier, de le tester, puis de le pousser vers le fournisseur d'hébergement (GitHub dans ce cas), mais pour simplement changer un répertoire, je souhaite une opération directe. Est-ce même possible avec Git?

Dois-je utiliser un autre programme peut-être?

user9303970
la source
2
Non, les opérations à distance directes ne sont pas possibles dans Git. Vous devez cloner (télécharger) le projet, le modifier, puis repousser vers le fournisseur d'hébergement. Mais comment utilisez-vous même Github sans avoir le projet sur votre ordinateur? Effectuez-vous toutes les modifications via l'interface utilisateur Web de Github - cela ne semble pas très pratique ou efficace.
user253751
Dans ce cas particulier, l'utilisation de l'interface utilisateur est généralement assez pratique et efficace pour moi, la principale chose qui me manque est le changement direct de nom de
répertoire

Réponses:

28

Le message d'erreur fatal indique que vous travaillez à partir d'un endroit qui n'est pas un clone de votre référentiel git. Commençons donc par cloner le référentiel git en premier:

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

Saisissez-le ensuite:

cd ulcwe

et renommez le répertoire:

git mv local xyz

Pour que le changement soit partageable, vous devez le valider:

git commit -m "Rename local to xyz"

Vous pouvez maintenant le pousser vers votre dépôt git distant:

git push

et vous verrez le changement dans l'interface GitHub.

Stephen Kitt
la source
14
En d'autres termes, c'est comme n'importe quelle autre opération sur les fichiers de votre référentiel Git.
Courses de légèreté en orbite le
2
@LightnessRacesinOrbit, le demandeur semble avoir utilisé l'interface utilisateur Web pour toutes ses modifications jusqu'à présent.
user253751
5

Non, il n'y a aucun moyen de le faire en tant qu'opération directe en raison de la structure de git.

Le fonctionnement de git est qu'il stocke une copie de l'ensemble du référentiel, y compris tout l'historique, dans chaque emplacement.

Github, ou Bitbucket, ou tout autre fournisseur d'hébergement n'est essentiellement qu'une autre copie de votre référentiel git, avec une jolie interface Web en haut, qui est traitée comme une source centrale de vérité dans la plupart des workflows, mais l'utilitaire git ne le sait pas.

Les modifications sont suivies comme des validations. Je suppose que par direct operation, vous voulez dire un moyen de changer le nom du dossier sans créer de commit. Bien que cela soit possible en réécrivant l'historique, je ne le recommanderais pas, surtout s'il y a plusieurs personnes / machines avec des copies du dépôt git, car cela peut entraîner des incohérences.

Le moyen le plus simple de renommer un dossier dans un référentiel git serait de le cloner localement

git clone [url]
cd [git-folder]

Si vous avez déjà une copie locale du référentiel, tirez-la pour vous assurer que vous êtes à jour du référentiel distant

git pull

Apportez les modifications dont vous avez besoin localement

git mv local xyz

Qui devrait être automatiquement ajouté à la zone de transit par github. Ensuite, vous devez valider et pousser ces modifications.

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

Cela va valider la modification dans votre référentiel local, puis pousser ces modifications dans la copie distante du référentiel, dans ce cas, Github.

Mat
la source
8
Non, l'historique n'est pas stocké sous forme de modifications entre les validations, chaque validation est autonome. Les modifications entre les validations sont recalculées sur demande chaque fois qu'elles sont nécessaires.
Stephen Kitt
3
"tout l'historique est téléchargé à chaque emplacement" - pas avecgit clone --depth
user11153
2
La réécriture de l'historique ne serait pas nécessaire pour cela - GitHub pourrait simplement générer un commit le faisant. (Tout comme il le fait déjà lors de la modification de fichiers directement sur le site Web.)
user1686
0

Il est possible de renommer un répertoire sans cloner le référentiel, en utilisant l'API GitHub. Je n'ai connaissance d'aucune implémentation.

Source: /programming//a/31567094/370786

Rolf
la source