Ändern Sie einen Verzeichnisnamen in einem Github-Repository remote direkt vom lokalen Linux-Git?

10

Dies ist mein Git-Repository:

https://github.com/benqzq/ulcwe

Es hat ein Verzeichnis mit dem Namen localund ich möchte seinen Namen in einen anderen Namen ändern (z. B. von localbis xyz).

Das manuelle Ändern über die GitHub-Benutzeroberfläche ist ein Albtraum, da ich den Verzeichnisnamen für jede Datei separat ändern muss (GitHub muss noch eine Funktion zum Umbenennen von Verzeichnissen enthalten, ob Sie es glauben oder nicht).

Nach der Installation von Git habe ich diesen Befehl ausprobiert:

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

Obwohl ich keine Eingabeaufforderung für mein GitHub-Passwort erhalten habe, wurde folgende Fehlermeldung angezeigt:

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

Ich weiß, dass der springende Punkt in Git darin besteht, ein Projekt herunterzuladen, zu ändern, zu testen und dann an den Hosting-Anbieter (in diesem Fall GitHub) zu senden, aber um nur ein Verzeichnis zu ändern, wünsche ich eine direkte Operation. Ist das überhaupt mit Git möglich?

Soll ich vielleicht ein anderes Programm verwenden?

user9303970
quelle
2
Nein, direkte Remote-Operationen sind in Git nicht möglich. Sie müssen das Projekt klonen (herunterladen), ändern und dann zum Hosting-Anbieter zurückkehren. Aber wie verwenden Sie Github überhaupt, ohne das Projekt auf Ihrem Computer zu haben? Nehmen Sie alle Änderungen über die Github-Web-Benutzeroberfläche vor - das klingt nicht sehr bequem oder effizient.
user253751
In diesem speziellen Fall ist die Verwendung der Benutzeroberfläche für mich normalerweise recht bequem und effizient. Die Hauptsache, die ich vermisse, ist die direkte Änderung des
Verzeichnisnamens

Antworten:

28

Die schwerwiegende Fehlermeldung zeigt an, dass Sie von einem Ort aus arbeiten, der kein Klon Ihres Git-Repositorys ist. Beginnen wir also damit, zuerst das Git-Repository zu klonen:

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

Dann geben Sie es ein:

cd ulcwe

und benennen Sie das Verzeichnis um:

git mv local xyz

Damit die Änderung gemeinsam genutzt werden kann, müssen Sie sie festschreiben:

git commit -m "Rename local to xyz"

Jetzt können Sie es in Ihr Remote-Git-Repository übertragen:

git push

und Sie werden die Änderung in der GitHub-Oberfläche sehen.

Stephen Kitt
quelle
14
Mit anderen Worten, es ist genau wie bei jeder anderen Operation an den Dateien in Ihrem Git-Repository.
Leichtigkeitsrennen im Orbit
2
@LightnessRacesinOrbit Der Fragesteller scheint die Web-Benutzeroberfläche für alle bisherigen Änderungen verwendet zu haben.
user253751
5

Nein, es gibt keine Möglichkeit, dies als direkte Operation zu tun, da Git strukturiert ist.

Git funktioniert so, dass es eine Kopie des gesamten Repositorys einschließlich des gesamten Verlaufs an jedem einzelnen Speicherort speichert.

Github, Bitbucket oder ein anderer Hosting-Anbieter ist im Wesentlichen nur eine weitere Kopie Ihres Git-Repositorys mit einer hübschen Weboberfläche, die in den meisten Workflows als zentrale Quelle der Wahrheit behandelt wird. Das Git-Dienstprogramm weiß dies jedoch nicht.

Änderungen werden als Commits verfolgt. Ich vermute, damit direct operationmeinen Sie eine Möglichkeit, den Ordnernamen zu ändern, ohne ein Commit zu erstellen. Dies ist zwar durch Umschreiben des Verlaufs möglich, würde es jedoch nicht empfehlen, insbesondere wenn mehrere Personen / Maschinen mit Kopien des Git-Repos vorhanden sind, da dies zu Inkonsistenzen führen kann.

Der einfachste Weg, einen Ordner in einem Git-Repo umzubenennen, besteht darin, ihn lokal zu klonen

git clone [url]
cd [git-folder]

Wenn Sie bereits eine lokale Kopie des Repos haben, ziehen Sie diese, um sicherzustellen, dass Sie mit dem Remote-Repo auf dem neuesten Stand sind

git pull

Nehmen Sie die erforderlichen Änderungen vor Ort vor

git mv local xyz

Welches sollte automatisch von Github zum Staging-Bereich hinzugefügt werden. Dann sollten Sie diese Änderungen festschreiben und vorantreiben.

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

Dadurch wird die Änderung in Ihr lokales Repository übernommen und diese Änderungen werden dann auf die Remote-Kopie des Repositorys übertragen, in diesem Fall auf Github.

Matt
quelle
8
Nein, der Verlauf wird nicht als Änderung zwischen Commits gespeichert. Jedes Commit ist selbsttragend. Änderungen zwischen Commits werden auf Anfrage jedes Mal neu berechnet, wenn sie benötigt werden.
Stephen Kitt
3
"Der gesamte Verlauf wird an jeden einzelnen Ort heruntergeladen" - nicht mitgit clone --depth
user11153
2
Das Umschreiben des Verlaufs wäre hierfür nicht erforderlich - GitHub könnte einfach ein Commit generieren. (Genau wie beim Bearbeiten von Dateien direkt auf der Website.)
user1686
0

Es ist möglich, ein Verzeichnis mithilfe der GitHub-API umzubenennen, ohne das Repository zu klonen. Mir ist keine Implementierung bekannt.

Quelle: /programming//a/31567094/370786

Rolf
quelle