Kako klonirate skladišče Git v določeno mapo?

Z ukazom git clone git@github.com:whatever v trenutni mapi ustvarim imenik z imenom, ki se imenuje kakorkoli, in vanj prenesem vsebino skladišča Git:

/httpdocs/whatever/public

Moja težava je, da moram vsebino skladišča Git klonirati v svoj trenutni imenik, tako da bo prikazana na ustreznem mestu za spletni strežnik:

/httpdocs/public

Vem, kako premakniti datoteke, ko sem kloniral skladišče, vendar se zdi, da to krši Git, in rad bi imel možnost posodobitve samo s klicem git pull. Kako lahko to storim?

Rešitev

Opcija A:

git clone git@github.com:whatever folder-name

Ergo, za uporabo tudi tukaj:

git clone git@github.com:whatever .

Opcija B:

Premaknite tudi mapo .git. Upoštevajte, da je mapa .git v večini grafičnih raziskovalcev datotek skrita, zato ne pozabite prikazati skritih datotek.

mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/

Prva vrstica zajame vse običajne datoteke, druga vrstica zajame datoteke s pikami. To lahko storite tudi v eni vrstici, tako da omogočite dotglob (tj. shopt -s dotglob), vendar je to verjetno slaba rešitev, če postavljate vprašanje, na katerega odgovarja ta odgovor.

Najbolje pa je:

Delovno kopijo shranite nekje drugje in ustvarite simbolno povezavo. Na primer takole:

ln -s /where/it/is/right/now /the/path/I/want/to/use

V vašem primeru bi bilo to nekaj takega:

ln -sfn /opt/projectA/prod/public /httpdocs/public

Če bi želeli, bi ga lahko preprosto spremenili v test, tj:

ln -sfn /opt/projectA/test/public /httpdocs/public

brez premikanja datotek. Dodan -fn za primer, da bi kdo kopiral te vrstice (-f je sila, -n preprečuje nekatere pogosto neželene interakcije z že obstoječimi in neobstoječimi povezavami).

Če želite samo, da deluje, uporabite možnost A, če bo kdo drug pogledal, kaj ste naredili, uporabite možnost C.

Komentarji (18)

Mislim, da veliko ljudi, ki sprašujejo to vprašanje, išče naslednji primer. Če ste v imeniku, v katerega želite, da se izpiše vsebina skladišča git, zaženite:

git clone git@github.com:whatever .

"." na koncu določa trenutno mapo kot mapo za preverjanje.

Komentarji (7)

Ali pri premikanju datotek na želeno mesto premikate tudi imenik .git? Odvisno od operacijskega sistema in konfiguracije je ta imenik lahko skrit.

Vsebuje repozitorij in podporne datoteke, medtem ko so projektne datoteke, ki so v vašem imeniku /public, samo različice v trenutno odjavljeni reviziji (privzeto veja master).

Komentarji (0)