Jak zmienić nazwę folderu głównego git?

85

Właśnie zacząłem używać git w Vista, z moim repozytorium pod /path/to/project/git repo.

Odkryłem, że miejsce w nazwie folderu jest niewielkim irytacją podczas pracy w git bash.

Czy mogę po prostu zmienić nazwę folderu na /path/to/project/gitrepo? Czy wszystko w konfiguracji git jest względne, czy jest coś, co wyraźnie odnosi się do folderu nadrzędnego?

Próbowałem po prostu pobrać kopię głównego folderu dla systemu Windows i uruchomić na niej git bash, a „git log” pokazuje zmiany, które wprowadziłem wcześniej. Zakładam więc, że zmiana nazwy głównego folderu jest OK, ale chciałbym się upewnić, zanim przejdę dalej.

Mick O'Hea
źródło

Odpowiedzi:

53

Aby zmienić nieco Greg „s odpowiedź , tak, wszystko z git repo jest w stosunku do .gitkatalogu nadrzędnego, ale:

(i prawdopodobnie nie wpłynie to bezpośrednio na Ciebie, wymieniam tutaj tylko te powody ze względu na kompletność):

  • do ścieżki samego repozytorium mogą się odwoływać inne usługi działające na twoim komputerze (Apache, ssh, inne repozytorium deklarujące twoje repozytorium jako zdalne, używając pełnej ścieżki do pliku, warstwa gitolite deklarująca twoje repozytoria w określonej ścieżce, ... )
  • niektóre operacje używają pełnej ścieżki repozytorium (jak na przykład GIT_INDEX_FILEużycie w filter-branchpoleceniu, zobacz ten wątek ), więc oczywiście nie zmieniaj nazwy katalogu głównego podczas wykonywania złożonej operacji na repozytorium.

Dodatkowo „kopia dla systemu Windows” (zamiast a git clone) skopiuje wszystko, w tym haki, które mogą zawierać bezwzględną ścieżkę w ich skrypcie, jeśli je edytujesz i dokonasz tego rodzaju modyfikacji.

VonC
źródło
2
więc jeśli ktoś ma praktyczne, wyraźne kroki, które powinien wykonać, byłoby to bardzo wykonalne.
ahnbizcad
@gwho jaki krok, oprócz zmiany nazwy folderu repozytorium?
VonC,
88

Tak, można bezpiecznie zmienić nazwę folderu zawierającego repozytorium Git. Wszystkie ścieżki w repozytorium Git są względne.

Greg Hewgill
źródło
4

Najpierw sprawdź komentarze ...

Moim zdaniem najlepiej jest skorzystać z przepływu pracy git , zwłaszcza gdy korzystamy z serwera git (zdalne repozytorium master), co oznacza:

  • dostać stary katalog w synchronizacji z serwerem (git git pull, git pushi wreszcie git status, aby zobaczyć, czy wszystko jest w porządku)
  • git clone <former directory> <new directory>

(Ponieważ jestem również nowy w GIT, to może nie być pełna, poprawna odpowiedź. Miałem to samo pytanie co Mick i dla celów nauki starałem się to zrobić w git sposób :) Dzięki za wskazówkę, vonC! W razie potrzeby popraw mnie :)

PythoNic
źródło
1
Jeśli tak git clone <former directory> <new directory>, nie musisz tworzyć <new directory>pierwszego. git cloneUtworzy go dla Ciebie.
VonC
3
Myślę, że to nie robi tego, co chcesz. To ustawia początek <new directory>do <old directory>. Więc git remote -vw <new directory>pokaże origin C:/old/directory.
kvu787
1
Zgadzam się z @ kvu787, to nie brzmi jak to, o co się prosi, i prawdopodobnie spowoduje mnóstwo problemów.
alkanen
@ kvu787 @alkanen, Czy to pomaga, co zasugerował użytkownik: git remote rm origin- usunięcie starego katalogu jako źródła nowego przedstawiciela i - cd .. and rm -rf <former directory>usunięcie starego katalogu
PythoNic
@PythoNic, gdyby stare repozytorium miało zdalne repozytorium o nazwie „origin”, to nie, nie byłoby to w porządku, ponieważ nowe repozytorium nie miałoby już tego zdalnego. W przeciwnym razie byłoby dobrze, ale zmiana nazwy folderu byłaby prostsza.
kvu787
0

tak, możesz to zmienić. Twoje repozytorium nadal jest skierowane bezpośrednio do Twojego git .. po prostu nie usuwaj / nie edytuj nazwy pliku .git fo

Akshay Kumar
źródło