Jak sklonować repozytorium Git do określonego folderu?

Wykonanie polecenia git clone [email protected]:whatever tworzy katalog w moim bieżącym folderze o nazwie whatever i wrzuca zawartość repozytorium Git do tego folderu:

/httpdocs/whatever/public

Mój problem polega na tym, że zawartość repozytorium Git musi być sklonowana do mojego bieżącego katalogu, tak aby pojawiały się we właściwej lokalizacji dla serwera www:

/httpdocs/public

Wiem, jak przenieść pliki po sklonowaniu repozytorium, ale to chyba łamie Gita, i chciałbym być w stanie zaktualizować po prostu przez wywołanie git pull. Jak mogę to zrobić?

Author: Peter Mortensen, 2009-03-16

15 answers

Wariant A:

git clone [email protected]:whatever folder-name

Wariant B:

Przesuń .folder git też.

Jeszcze lepiej:

Zachowaj kopię roboczą gdzie indziej i utwórz dowiązanie symboliczne.

 2489
Author: Can Berk Güder,
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
2009-03-16 16:08:24

Przykładem, o którym myślę, że wielu ludzi zadaje to pytanie, jest to. Jeśli znajdujesz się w katalogu, do którego chcesz wrzucić zawartość repozytorium git, Uruchom:

git clone [email protected]:whatever .

"."na końcu określa bieżący folder jako folder realizacji zakupu.

 527
Author: J Wynia,
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-02-25 17:15:14

Przejdź do folderu.. Jeśli folder jest pusty, to:

git clone [email protected]:whatever .

Else

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
 180
Author: csomakk,
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
2017-01-04 23:02:44

Podstawowe Klonowanie Repozytorium Git

Sklonujesz repozytorium za pomocą

git clone [url]

Na przykład, jeśli chcesz sklonować bibliotekę Git Open Framework Drupal Uniwersytetu Stanforda o nazwie open_framework, możesz to zrobić w następujący sposób:

$ git clone git://github.com/SU-SWS/open_framework.git

, który tworzy katalog o nazwie open_framework (w bieżącej lokalizacji lokalnego systemu plików), inicjalizuje a .katalog git wewnątrz niego, pobiera wszystkie dane do tego repozytorium i sprawdza roboczą kopię najnowszej wersji. Jeśli wejdziesz w w nowo utworzonym katalogu open_framework zobaczysz pliki projektu gotowe do pracy lub użycia.

Klonowanie repozytorium do określonego folderu lokalnego

Jeśli chcesz sklonować repozytorium do katalogu o nazwie innej niż open_framework, możesz określić to jako następną opcję wiersza poleceń:

$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme

To polecenie robi to samo co poprzednie, ale katalog docelowy nazywa się mynewtheme.

Git ma wiele różnych protokoły transferu można użyć. Poprzedni przykład używa protokołu git://, ale możesz również zobaczyć http(s): / / lub user@server:/path.git, który używa protokołu SSH transfer protocol.

 75
Author: Craig Gjerdingen,
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
2018-06-05 00:26:46

Kiedy przenosisz pliki tam, gdzie chcesz, czy przenosisz również katalog .git? W zależności od systemu operacyjnego i konfiguracji katalog ten może być ukryty.

Zawiera repo i pliki pomocnicze, podczas gdy pliki projektu znajdujące się w Twoim katalogu /public są tylko wersjami w aktualnie sprawdzanym zatwierdzeniu (domyślnie Branch master).

 13
Author: Paul,
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
2009-03-16 16:14:48

Klon:

git clone [email protected]:jittre/name.git

Klonowanie "konkretnej gałęzi":

git clone -b [branch-name] [email protected]:jittre/name.git
 11
Author: Selvamani,
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
2016-06-07 01:47:56

Jeśli chcesz sklonować do bieżącego folderu, powinieneś spróbować tego:

git clone https://github.com/example/example.git ./
 11
Author: Luis,
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
2017-01-04 23:11:14

Upewnij się, że usunąć .repozytorium git jeśli próbujesz sprawdzić coś w bieżącym katalogu.

rm -rf .git then git clone https://github.com/symfony/symfony-sandbox.git

 9
Author: alex,
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-06-26 22:44:25

Aby sklonować repozytorium git do określonego folderu, możesz użyć parametru -C <path>, np.

git -C /httpdocs clone [email protected]:whatever

Mimo że nadal utworzy na nim folder whatever, więc aby sklonować zawartość repozytorium do bieżącego katalogu, użyj następującej składni:

git [email protected]:whatever .

Należy pamiętać, że klonowanie do istniejącego katalogu jest dozwolone tylko , gdy katalog jest pusty.

Ponieważ klonujesz do folderu, który jest dostępny publicznie, rozważ oddzielenie repozytorium Git z drzewa roboczego używając --separate-git-dir=<git dir> lub wyklucz .git w konfiguracji serwera www (np. w pliku .htaccess).

 9
Author: kenorb,
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
2017-01-08 20:13:13

To clone to Present Working Directory :

Git clone https://github.com/link.git

Do klonowania do innego katalogu :

Git clone https://github.com/link.git ./ Folder1 / Folder2

Mam nadzieję, że pomoże:)

 9
Author: Sarat Chandra,
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
2017-03-21 16:03:51

Użycie

git clone <repository>

Sklonuj repozytorium znajdujące się w na maszynę lokalną. Oryginalne repozytorium może znajdować się na lokalnym systemie plików lub na zdalnym komputerze dostępnym przez HTTP lub SSH.

git clone <repo> <directory>

Sklonuj repozytorium znajdujące się w do folderu o nazwie na komputerze lokalnym.

Źródło: zakładanie repozytorium

 7
Author: Nagarjun,
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
2017-01-04 23:06:07

Oto jak bym to zrobił, ale stworzyłem pseudonim, żeby zrobić to za mnie.

$ cd ~Downloads/git; git clone https:git.foo/poo.git

Prawdopodobnie istnieje bardziej elegancki sposób na zrobienie tego, jednak uznałem to za najłatwiejsze dla mnie.

Oto pseudonim, który stworzyłem, by przyspieszyć sprawy. Zrobiłem go dla zsh, ale powinien działać dobrze dla bash lub innych powłok, takich jak ryby, xyzsh, fizsh i tak dalej.

Edytuj ~/.zshrc, /.bashrc, itd. z Twoim ulubionym edytorem (moim jest Leafpad, więc napiszę $ leafpad ~/.zshrc).

Mój osobistą preferencją jest jednak zrobienie wtyczki zsh, aby śledzić wszystkie moje aliasy. Możesz utworzyć osobistą wtyczkę dla oh-my-zsh, uruchamiając te polecenia:

$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
     # In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
     # Again, in my case 'ev-aliases.plugin.zsh'

Następnie dodaj te linie do nowo utworzonych pustych alises.plik wtyczki:

# Git aliases
alias gc="cd ~/Downloads/git; git clone "

(stąd, Zamień swoje imię na moje.)

Następnie, aby aliasy działały, muszą one (wraz z zsh) być pozyskiwane (czy jak to się nazywa). Aby to zrobić, wewnątrz dokumentu niestandardowej Wtyczki Dodaj to:

## Ev's Aliases

#### Remember to re-source zsh after making any changes with these commands:

#### These commands should also work, assuming ev-aliases have already been sourced before:

allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
#### 

####################################

# git aliases

alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "

####################################

Zapisz swoją wtyczkę oh-my-zsh i uruchom allsource. Jeśli to nie działa, po prostu uruchom source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh. To załaduje źródło wtyczki, które pozwoli Ci używać allsource od teraz.


Jestem w trakcie tworzenia repozytorium Git ze wszystkimi moimi aliasami. Zapraszamy do zapoznania się z nimi tutaj: EV ' S dot-files . Prosimy o rozwidlenie i ulepszenie ich zgodnie z Twoimi potrzebami.

 3
Author: Ev-,
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
2017-01-04 23:10:24

Załóżmy, że chcesz mieć folder podobny do /stuff, ale twój pull tworzy katalog pod /repo/tokens/.

Możesz zrobić:

mkdir /stuff
ln -s /repo/tokens /stuff
To wszystko. Jesteś skończony.
 0
Author: pacifi30,
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
2017-01-04 23:01:58

Jeśli używasz ssh dla git cloning możesz użyć następującego polecenia.

git -C path clone [email protected]:path_to_repo.git

Eg: git -C /home/ubuntu/ clone [email protected]:kennethreitz/requests.git ściągnie repozytorium git dla requests do twojej ścieżki /home/ubuntu/.

 0
Author: Ankit Singh,
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
2017-03-27 07:36:06

Odnośnie tej linijki z oryginalnego postu:

" wiem jak przenieść pliki po sklonowaniu repo, ale to wydaje się łamać git "

Jestem w stanie to zrobić i nie widzę żadnych problemów z moimi operacjami dodaj, commit, push, pull.

Takie podejście jest opisane powyżej, ale po prostu nie podzielone na etapy. Oto kroki, które działają dla mnie:

  1. Sklonuj repo do dowolnego świeżego folderu tymczasowego
  2. cd do tego głównego folderu ty po prostu klonowane lokalnie
  3. Skopiuj całą zawartość folderu, łącznie z /.Git directory-do dowolnego istniejącego katalogu, który lubisz; (powiedzmy projekt eclipse, który chcesz połączyć ze swoim repo)

Istniejący folder, do którego właśnie skopiowałeś Pliki, jest teraz gotowy do interakcji z Gitem.

 -2
Author: gnB,
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-05-06 19:06:46