Prześlij zmiany git na udostępniony dysk sieciowy


90

W jaki sposób zespół czterech osób może używać Git (szczególnie Github dla Windows ) do wypychania lokalnych zmian na udostępniony dysk sieciowy?

W tej chwili (bez Gita) musimy skopiować pliki z dysku sieciowego na nasz lokalny komputer, edytować pliki, a następnie ponownie przesłać je na udostępniony dysk sieciowy. Jest to żmudny proces, który może prowadzić do wielu błędów, ale wygląda na to, że Git mógłby nam w tym pomóc.

Czy możemy po prostu zainstalować Git na dysku współdzielonym i zacząć stamtąd?

Odpowiedzi:


123

Nie jestem pewien, czy znalazłeś coś, co działa dla ciebie, czy nie, ale mam napisać, jak to zrobić na dysku sieciowym Windows:

http://tony.halcyonlane.com/blog/2011/09/22/Using-git-at-work-on-a-Windows-network-drive/

Z polecenia cmd zmiana na zmapowany dysk.

$ cd g:

Następnie przejdź do repozytorium git, które wkrótce ma być.

$ cd skryptów

Następnie utwórz puste repozytorium git. Jeśli nie używasz opcji --bare, będziesz mieć problemy, więc nie pomijaj tego.

$ git init --bare

Teraz, jeśli nie masz jeszcze lokalnego repozytorium git, możesz sklonować swoje nowe repozytorium w dowolnym miejscu, przechodząc z powrotem na dysk lokalny.

$ c:

$ cd praca / skrypty

$ git clone file: // g: \ scripts

Podczas klonowania automatycznie uzyskujesz zdalny plik o nazwie „źródło” i możesz przesłać go na serwer w celu bezpiecznego przechowywania za każdym razem, gdy wprowadzasz zmiany lokalnie.

$ git push origin master

Jeśli masz już repozytorium git i chcesz po prostu wypchnąć na dysk współdzielony, możesz to zrobić z lokalnego katalogu git.

$ git remote dodaj plik pochodzenia: // g: \ scripts

$ git push origin master


1
Dziękuję - zrobiłem dokładnie to dla osobistego projektu w mojej sieci domowej.
— Martin Snyder

Wykonałem te kroki, ale otrzymałem następujące błędy po uruchomieniu git push origin master error: cannot spawn sh: No such file or directory fatal: cannot to fork
— NickStees

Dziękuję Ci. Znalezienie tej odpowiedzi
— zajęło

Dla każdego, kto nie ma zmapowanego dysku współdzielonego, istnieje pushd (i popd), aby utworzyć wirtualny dysk tymczasowy, do którego można się udać ( patrz link )
— LoJo

Jakie problemy będziesz mieć, jeśli nie użyjesz --bare? Mam już repozytorium non-bare na dysku sieciowym i chciałbym używać go jako pilota.
— Fractaly

24

Nasz zespół obecnie właśnie to robi. Każdy programista ma:

  1. Git zainstalowany na ich komputerze lokalnym
  2. Dostęp do ich osobistego dysku współdzielonego ( L:)
  3. Dostęp do współdzielonego dysku grupowego ( V:)

Mamy „zdalne” repozytorium (skonfigurowane przy użyciu init -bare) na V:dysku i każdy ma klon na swoim L:dysku osobistym . Wszystkie zmiany są wprowadzane na L:dysku i wypychane na V:dysk, który jest następnie ściągany później przez innych programistów do ich osobistych repozytoriów na ich L:dyskach. Działa to bez żadnych problemów i ogranicza potrzebę posiadania serwera Git.


Okej świetnie! Czy muszę najpierw utworzyć lokalne repozytorium, a następnie skonfigurować zdalne repozytorium na udostępnionym dysku?
— user1549303

1
@ user1549303 - Tak to robimy. Możesz utworzyć lokalne repozytorium (nasze L:repozytorium dysku) za pomocą git init, a następnie utworzyć zdalne (nasz v:dysk) za pomocą git clone --bare(lub a git init --bare, a następnie wypchnij z L:).
— eykanal

@eykanal - Mój zespół korzysta obecnie ze starożytnej, okropnej biblioteki kontroli źródła i zamierzamy przejść na git. Jedną z rzeczy, które pozwala mi nasza obecna biblioteka, jest sprawdzenie, kto wyewidencjonował plik, ale zapomniał wpisać zmiany. W git wszystkie repozytoria są lokalne, więc skąd możesz wiedzieć, czy ktoś zapomniał nacisnąć na „v:”?
— Kevin Buchan

3
@KevinBuchan - proponuję zamieścić swój komentarz jako nowe pytanie.
— eykanal

1
Jak Git reaguje, gdy dwóch programistów próbuje w tym samym czasie przesyłać dane do tego samego współdzielonego repozytorium (powiedzmy V :)? Czy miałeś jakiś problem z współbieżnymi operacjami wypychania?
— Jordi

2

Możesz dodać kolejny pilot wskazujący na twój dysk sieciowy (git remote)

Następnie możesz push pull podobnie jak w przypadku github

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.