Git clone repo across local file system in windows

Jestem kompletnym noobem jeśli chodzi o Gita. Od kilku dni stawiam pierwsze kroki. Ustawiłem repo na moim laptopie, ściągnąłem bagażnik z projektu SVN (miałem pewne problemy z gałęziami, nie dostałem ich działa), ale wszystko wydaje się tam ok.

Chcę teraz móc ciągnąć lub pchać z laptopa do mojego głównego pulpitu. Powodem jest to, że laptop jest przydatny w pociągu, ponieważ spędzam 2 godziny dziennie w podróży i mogę wykonać dobrą pracę. Ale moja główna maszyna w dom jest świetny do rozwoju. Więc chcę być w stanie push / pull z laptopa do głównego komputera, kiedy wrócę do domu. Myślałem, że najprostszym sposobem na zrobienie tego byłoby po prostu udostępnienie folderu z kodem w sieci LAN i zrobienie tego:

git clone file://192.168.10.51/code

Niestety to chyba nie działa dla mnie:

Więc otwieram Git bash cmd i wpisuję powyższe polecenie, jestem w C:\code (folder współdzielony dla obu maszyn) to jest to, co otrzymuję z powrotem:

Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Jak mogę podzielić się repozytorium między dwoma maszynami w najprostszy sposób.

Będą inne lokalizacje, które będą oficjalnymi punktami przechowywania i miejscami, z których będą ciągnąć się inni deweloperzy i serwer CI itp., to po to, żebym mógł pracować na tym samym repo na dwóch maszynach.

Zgodnie z sugestią Sebastiana dostaję:

C:\code>git clone --no-hardlinks file://192.168.10.51/code
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

**EDIT-ODPOWIEDŹ * *

Dzięki wszystkim, co pomogło. Próbowałem mapowania dysku i to działało, więc pomyślałem, że wrócę i powtórzę bez mapowania. Wynik końcowy:
git clone file://\\\\192.168.0.51\code
To zadziałało świetnie.

Dzięki

Author: raam86, 2010-03-26

7 answers

Możesz określić adres URL pilota, stosując ścieżkę UNC do protokołu plików. Wymaga to użycia czterech ukośników:

git clone file:////<host>/<share>/<path>

Na przykład, jeśli Twoja główna maszyna ma adres IP 192.168.10.51 i nazwa komputera main, i ma udział o nazwie code, który sam w sobie jest repozytorium git, wtedy oba poniższe polecenia powinny działać jednakowo:

git clone file:////main/code
git clone file:////192.168.10.51/code

Jeśli repozytorium Git znajduje się w podkatalogu, po prostu dodaj ścieżkę:

git clone file:////main/code/project-repository
git clone file:////192.168.10.51/code/project-repository
 175
Author: poke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-15 22:20:27
$ git clone --no-hardlinks /path/to/repo

Powyższe polecenie wykorzystuje zapis ścieżki POSIX dla katalogu z repozytorium git. Dla Windows jest to (katalog C:/path/to/repo zawiera .git Katalog):

C:\some\dir\> git clone --local file:///C:/path/to/repo my_project

Repozytorium zostanie sklonowane do C:\some\dir\my_project. Jeśli pominiesz file:/// część, to opcja --local jest domyślna.

 117
Author: jfs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-25 23:37:22

Odpowiedź z nazwą hosta nie działa dla mnie ale to:

Plik Git clone: / / / / home/git/repozytoria / MyProject.git /

 14
Author: Talaat Safwat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-09 12:49:46

Udało mi się to zrobić używając file://, ale z jednym dodatkowym ukośnikiem oznaczającym ścieżkę bezwzględną.

git clone file:///cygdrive/c/path/to/repository/

W moim przypadku używam Git na Cygwin Dla Windows, co widać ze względu na Część /cygdrive/c w moich ścieżkach. Z pewnymi poprawkami do ścieżki powinno działać z każdą instalacją git.

Dodawanie zdalnego działa w ten sam sposób

git remote add remotename file:///cygdrive/c/path/to/repository/
 7
Author: Mark F Guerra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-19 16:35:01

Może zmapować udział jako dysk sieciowy, a następnie zrobić

git clone Z:\

Głównie tylko zgaduję; zawsze robię te rzeczy za pomocą ssh. Podążając za tym sugestią, oczywiście będziesz musiał zmapować ten dysk za każdym razem, gdy naciskasz/ciągniesz do / z laptopa. Nie jestem pewien, jak skonfigurować ssh do pracy pod windows, ale jeśli masz zamiar robić to często, może warto zbadać.

 6
Author: intuited,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-25 23:02:01

Nie jestem pewien, czy to z powodu mojej wersji git (1.7.2), CZY Co, ale podejścia wymienione powyżej używając nazwy Maszyny i opcji IP nie działały dla mnie. Dodatkowym szczegółem, który może/może nie być ważny, jest to, że repo był gołym repo, który zainicjowałem i pchnąłem z innej maszyny.

Starałem się sklonować project1 tak jak zalecono powyżej za pomocą takich komend jak:

$ git clone file:////<IP_ADDRESS>/home/user/git/project1
Cloning into project1...
fatal: '//<IP_ADDRESS>/home/user/git/project1' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

I

$ git clone file:////<MACHINE_NAME>/home/user/git/project1
Cloning into project1...
fatal: '//<MACHINE_NAME>/home/user/git/project1' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

To, cowykonało dla mnie było czymś prostsze: {]}

$ git clone ../git/project1
Cloning into project1...
done.

Uwaga - pomimo tego, że repo sklonowane Z było nagie, dało to 'normalny' klon ze wszystkimi rzeczywistymi plikami kodu / obrazu/zasobów, na które liczyłem (w przeciwieństwie do wewnętrznych repo Gita).

 3
Author: bargar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-09 21:30:24

Wprowadź ścieżki bezwzględne lub ścieżki względne.

Na przykład pierwsza poniżej używa ścieżek bezwzględnych:

(to jest z wnętrza folderu, który zawiera repozytorium i kopię zapasową jako podfoldery. Pamiętaj również, że folder kopii zapasowej nie jest modyfikowany, jeśli już coś zawiera. a jeśli go nie ma, zostanie utworzony nowy folder)

~/git$ git clone --no-hardlinks ~/git/git_test1/   ~/git/bkp_repos/

Poniższe używa ścieżek względnych:

~/git$ git clone --no-hardlinks git_test1/   bkp_repos2/
 1
Author: sidquanto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-19 16:59:25