Mam projekt, w którym utworzyłem repozytorium git:
$ cd myproject
$ git init
$ git add .
$ git commit
Chciałem stworzyć goły klon na innej maszynie:
$ cd ..
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Wykonałem klon, ale nie wydrukowałem żadnej odpowiedzi. Zalogowałem się na maszynie serwerowej i próbowałem zobaczyć, jak są przechowywane pliki. Ścieżka / GitRepos była pusta, więc postanowiłem zrobić klon ponownie:
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Tym razem odpowiedź brzmiała:
fatal: ścieżka docelowa 'ssh: // użytkownik @ serwer: /GitRepos/myproject.git' już istnieje i nie jest pustym katalogiem.
Ale widziałem, że ścieżka była pusta.
Co tu się dzieje ?
git clone --bare
zrobi to, co myślisz.Odpowiedzi:
Jest to prawdopodobnie niezwiązane bezpośrednio z pytaniem; ale jednym błędem, który właśnie popełniłem i widzę w OP, jest specyfikacja adresu URL
ssh://user@server:/GitRepos/myproject.git
- mianowicie masz zarówno dwukropek:
, jak i ukośnik/
po nim, oznaczający bezwzględną ścieżkę.Następnie znalazłem klon Git, ssh: Nie można rozpoznać nazwy hosta - git, programowanie - Nicolas Kuttler (ponieważ taki błąd występował w
git
wersji 1.7.9.5), zauważając:... co też było moim problemem! Więc w zasadzie w
git
zssh
, możesz albo użyćssh://[email protected]/absolute/path/to/repo.git/
- tylko ukośnik dla absolutnej ścieżki na serwerze[email protected]:relative/path/to/repo.git/
- tylko dwukropek (nie może miećssh://
ścieżki względnej na serwerze (względem katalogu domowegousername
na komputerze serwera)Mam nadzieję, że to komuś pomoże,
zdrowie!
źródło
ssh://
prefiks. Właśnie spędziłem 20 minut, próbując to rozgryźć.git clone [email protected]:relative/path/to/repo.git/
powinno działać.W przypadku repozytoriów w serwisie GitHub spróbuj:
Aby skonfigurować git do klonowania przez ssh, zobacz:
Generowanie kluczy SSH i dodaj wygenerowany klucz w Ustawieniach konta -> Klucze SSH
Klonowanie za pomocą SSH
źródło
Musisz uruchomić polecenie klonowania na tym, co nazywasz serwerem. Ale założę się, że nie używasz serwera ssh na lokalnym kliencie, więc i tak to nie zadziała. Zaproponuj skorzystanie z tego podejścia (sprawdź instrukcję, ponieważ robię to z pamięci)
git init --bare
git remote add origin ssh://user@server:/GitRepos/myproject.git
śledzony przezgit push origin master
źródło
Oświadczenie: To tylko kopia komentarza bobbaluba, bardziej widoczna dla przyszłych gości. Pomógł mi bardziej niż jakakolwiek inna odpowiedź.
Musisz
ssh://
użyć prefiksu, gdy używasz gogit clone
jako przykładuźródło
Spróbuj tego.
Krok 1:
Krok 2:
(za pomocą klawisza Enter jako wartości domyślnej) Krok 3: Aby skonfigurować plik konfiguracyjny
Krok 4:
Krok 5:
Po zakończeniu kroku 4
1. plik test2.git zostanie pobrany do pobrania 2.
Otrzymasz nowy plik (znane_hosty) w ~ / .ssh
PS: Sam tworzę pliki id_rsa i id_rsa.ub i dostarczam je na serwer Gitlab. używając obu kluczy do dowolnej strony klienta (Windows i Linux).
źródło
Git 101:
git
to zdecentralizowany system kontroli wersji. Nie potrzebujesz serwera, aby rozpocząć pracę z git. Nadal możesz chcieć to zrobić, ponieważ wygląda fajnie, prawda? (Jest to również przydatne, jeśli chcesz pracować nad jednym projektem z wielu komputerów).Aby uruchomić „serwer”, musisz go uruchomić,
git init --bare <your_project>.git
ponieważ utworzy to puste repozytorium, które możesz następnie zaimportować na swoje komputery bez konieczności chowania plików konfiguracyjnych w swoim katalogu.git
.Następnie możesz sklonować repozytorium na swoich klientach, ponieważ powinno to działać, ale odkryłem, że niektórzy klienci (mianowicie
git-gui
) nie sklonują repozytorium, które jest całkowicie puste. Aby obejść ten problem, musisz bieccd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master
. (Pamiętaj, że może być konieczne skonfigurowanie nazwy użytkownika i adresu e-mail dla git tego komputera, jeśli nie robiłeś tego w przeszłości. Rzeczywiste polecenia do uruchomienia będą w komunikacie o błędzie, który otrzymasz, więc po prostu je pominę).W tym momencie można sklonować repozytorium na dowolnej maszynie, po prostu uruchamiając
git clone <user>@<server>:<relative_path><your_project>.git
. (Jak zauważyli inni,ssh://
przed użyciem ścieżki bezwzględnej może być konieczne jej podanie ). Zakłada się, że możesz już zalogować się z klienta na serwer. (Otrzymasz także punkty bonusowe za skonfigurowanie pliku konfiguracyjnego i kluczyssh
, jeśli zamierzasz wypchnąć wiele rzeczy na zdalny serwer).Kilka istotnych linków:
To w zasadzie mówi ci, co musisz wiedzieć.
I to jest dla tych, którzy znają podstawowe zasady działania git, ale czasami zapominają o dokładnej składni.
źródło
Chcę spróbować odpowiedzi, która obejmuje git-flow i trzy „punkty” lub przypadki użycia, centralne repozytorium git, rozwój lokalny i maszynę produkcyjną. To nie jest dobrze przetestowane .
Daję niezwykle konkretne polecenia. Zamiast powiedzieć
<your folder>
, powiem/root/git
. Jedynym miejscem, w którym zmieniam oryginalne polecenie, jest zastąpienie mojej konkretnej nazwy serwera nazwąexample.com
. Wyjaśnię, że celem folderów jest odpowiednie dostosowanie. Daj mi znać o wszelkich nieporozumieniach, a ja zaktualizuję odpowiedź.Wersja git na serwerze to 1.7.1. Serwer to CentOS 6.3 (wersja ostateczna).
Wersja git na maszynie programistycznej to 1.8.1.1. To jest Mac OS X 10.8.4.
Centralne repozytorium i maszyna produkcyjna znajdują się na tej samej maszynie.
centralne repozytorium, z którym użytkownicy svn mogą się odnosić jako „serwer”, jest skonfigurowane w następujący sposób. Mam folder, w
/root/git
którym przechowuję wszystkie moje repozytoria git. Chcę utworzyć repozytorium git dla projektu, który nazywam „kwiatami”.Polecenie git przekazało dwie wiadomości:
Nie ma się o co martwić.
Na komputerze programistycznym jest skonfigurowany w następujący sposób. Mam folder, w
/home/kinjal/Sites
którym umieszczam wszystkie moje projekty. Chcę teraz uzyskać centralne repozytorium git.To prowadzi mnie do punktu, w którym mogę zacząć dodawać do niego różne rzeczy. Najpierw skonfigurowałem Git Flow
Domyślnie jest to gałąź
develop
. Teraz dodaję mój kod. Następnie muszę zatwierdzić do centralnego repozytorium git.W tym momencie przeszedł do gałęzi rozwoju. Chcę również dodać to do gałęzi master.
Zauważ, że nic nie zrobiłem między początkiem a końcem wydania. A kiedy skończyłem wydawanie, zostałem poproszony o edycję dwóch plików. Doprowadziło to gałąź rozwoju do opanowania.
W witrynie produkcyjnej, która znajduje się na tym samym komputerze, co moje centralne repozytorium git, chcę umieścić repozytorium
/var/www/vhosts/example.net
. Mam już/var/www/vhosts
.Jeśli maszyna produkcyjna byłaby również na innym komputerze,
git clone
polecenie wyglądałoby tak, jak na maszynie programistycznej.źródło
Z góry trochę brakuje mi umiejętności GIT.
Spowoduje to sklonowanie nagiego repozytorium na twoim komputerze, które zawiera tylko foldery, w
.git
których znajduje się ukryty katalog. wykonajls -al
i powinieneś zobaczyć.git
lubcd .git
w swoim repozytorium.Czy możesz dodać opis swojej intencji, aby osoba z większą liczbą umiejętności GIT mogła pomóc? Czego tak naprawdę chcesz, a czego nie chcesz?
źródło
Zrobiłem: git clone --bare "/ GITREPOSITORIES / RepoA" "ssh: // luc @ EERSTENASDS119J / volume1 / RepoA" Wynik: fatal: ścieżka docelowa 'ssh: // luc @ EERSTENASDS119J / volume 1 / RepoA' już istnieje i jest nie pusty katalog.
System utworzył katalog ssh: // luc @ EERSTENASDS119J / volume1 / RepoA w mojej bieżącej ścieżce.
Zatem git clone nie zinterpretował specyfikacji adresu URL. Wykorzystano obejście Aleca.
źródło
git clone git @ server: Przykład / proyect.git
źródło