Zmienić nazwę katalogu w repozytorium Github zdalnie, bezpośrednio z lokalnego Linux Git?

10

To jest moje repozytorium Git:

https://github.com/benqzq/ulcwe

Ma katalog o nazwie locali chcę zmienić jego nazwę na inną nazwę (powiedzmy z localna xyz).

Ręczna zmiana w GUI GitHub jest koszmarem, ponieważ muszę zmienić nazwę katalogu dla każdego pliku osobno (GitHub musi jeszcze włączyć funkcję „Zmiana nazwy katalogu”, wierzcie lub nie).

Po zainstalowaniu Gita spróbowałem tego polecenia:

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

Chociaż nie otrzymałem monitu o hasło do GitHub, otrzymałem ten błąd:

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

Wiem, że w Git chodzi o to, aby pobrać projekt, zmienić, przetestować, a następnie przekazać do dostawcy hostingu (w tym przypadku GitHub), ale po prostu zmienić katalog, chcę bezpośredniej operacji. Czy to w ogóle możliwe z Git?

Może powinienem użyć innego programu?

użytkownik9303970
źródło
2
Nie, bezpośrednie zdalne operacje nie są możliwe w Git. Musisz sklonować (pobrać) projekt, zmienić go, a następnie odesłać z powrotem do dostawcy hostingu. Ale w jaki sposób korzystasz z Github bez projektu na komputerze? Czy wprowadzasz wszystkie zmiany za pośrednictwem interfejsu internetowego Github - to nie brzmi zbyt wygodnie ani wydajnie.
user253751
W tym konkretnym przypadku korzystanie z interfejsu użytkownika jest dla mnie zwykle bardzo wygodne i wydajne, najważniejszą rzeczą, za którą tęsknię, jest bezpośrednia zmiana nazwy
katalogu

Odpowiedzi:

28

Fatalny komunikat o błędzie wskazuje, że pracujesz z miejsca, które nie jest klonem twojego repozytorium git. Zacznijmy od klonowania repozytorium git:

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

Następnie wprowadź:

cd ulcwe

i zmień nazwę katalogu:

git mv local xyz

Aby zmiana mogła być udostępniana, musisz ją zatwierdzić:

git commit -m "Rename local to xyz"

Teraz możesz przekazać go do zdalnego repozytorium git:

git push

i zobaczysz zmianę w interfejsie GitHub.

Stephen Kitt
źródło
14
Innymi słowy, jest to jak każda inna operacja na plikach w repozytorium Git.
Wyścigi lekkości na orbicie
2
@LightnessRacesinOrbit pytający prawdopodobnie do tej pory korzystał z internetowego interfejsu użytkownika do wszystkich swoich zmian.
user253751
5

Nie, nie można tego zrobić jako operacji bezpośredniej ze względu na strukturę git.

Git działa w ten sposób, że przechowuje kopię całego repozytorium, w tym całą historię, w każdej lokalizacji.

Github, Bitbucket lub jakikolwiek inny dostawca hostingu jest w zasadzie kolejną kopią twojego repozytorium git, z ładnym interfejsem internetowym na górze, który jest traktowany jako centralne źródło prawdy w większości przepływów pracy, jednak narzędzie git tego nie wie.

Zmiany są śledzone jako zatwierdzenia. Zgaduję, że direct operationmasz na myśli sposób zmiany nazwy folderu bez tworzenia zatwierdzenia. Chociaż jest to możliwe poprzez przepisywanie historii, nie poleciłbym jej, szczególnie jeśli jest wiele osób / komputerów z kopiami repozytorium git, ponieważ może to prowadzić do niespójności.

Najłatwiejszym sposobem zmiany nazwy folderu w repozytorium git byłoby sklonowanie go lokalnie

git clone [url]
cd [git-folder]

Jeśli masz już lokalną kopię repozytorium, wyciągnij ją, aby upewnić się, że jesteś na bieżąco z repozytorium zdalnym

git pull

Wprowadź zmiany, których potrzebujesz lokalnie

git mv local xyz

Które powinny być automatycznie dodawane do obszaru przeciwności przez github. Następnie powinieneś zatwierdzić i pchnąć te zmiany.

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

Spowoduje to zatwierdzenie zmiany w lokalnym repozytorium, a następnie przekazanie tych zmian do zdalnej kopii repozytorium, w tym przypadku Github.

Matt
źródło
8
Nie, historia nie jest przechowywana jako zmiany między zatwierdzeniami, każde zatwierdzenie jest samonośne. Zmiany między zatwierdzeniami są przeliczane na żądanie za każdym razem, gdy są potrzebne.
Stephen Kitt
3
„cała historia jest pobierana do każdej pojedynczej lokalizacji” - nie zgit clone --depth
user11153
2
Przepisywanie historii nie byłoby w tym przypadku wymagane - GitHub mógł po prostu wygenerować zatwierdzenie. (Tak jak ma to już miejsce podczas edycji plików bezpośrednio na stronie internetowej.)
user1686