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
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
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.
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 /
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/
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ć.
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).
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/
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