Het uitvoeren van het commando git clone [email protected]:whatever
creëert een map in mijn huidige map met de naam wat dan ook, en zet de inhoud van de Git repository in die map:
/httpdocs/whatever/public
Mijn probleem is dat ik de inhoud van de Git repository in mijn huidige map gekloond moet hebben, zodat ze op de juiste locatie voor de webserver verschijnen:
/httpdocs/public
Ik weet hoe ik de bestanden moet verplaatsen nadat ik de repository gekloond heb, maar dit lijkt Git te breken, en ik wil graag in staat zijn om te updaten door gewoon git pull
aan te roepen. Hoe kan ik dit doen?
Optie A:
git clone [email protected]:whatever folder-name
Ergo, voor hier
te gebruiken:
git clone [email protected]:whatever .
Optie B:
Verplaats de .git
map ook. Merk op dat de .git
map verborgen is in de meeste grafische bestandsverkenners, dus wees er zeker van dat verborgen bestanden getoond worden.
mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/
De eerste regel pakt alle normale bestanden, de tweede regel pakt de punt-bestanden. Het is ook mogelijk om het in één regel te doen door dotglob in te schakelen (d.w.z. shopt -s dotglob
) maar dat is waarschijnlijk een slechte oplossing als je de vraag stelt die dit antwoord beantwoordt.
Beter nog:
Bewaar je werkkopie ergens anders, en maak een symbolische link. Zoals dit:
ln -s /where/it/is/right/now /the/path/I/want/to/use
In jouw geval zou dit zoiets zijn als:
ln -sfn /opt/projectA/prod/public /httpdocs/public
Wat gemakkelijk veranderd kan worden in test als u dat wilt, d.w.z.:
ln -sfn /opt/projectA/test/public /httpdocs/public
zonder bestanden te verplaatsen. -fn
toegevoegd voor het geval iemand deze regels kopieert (-f
is force, -n
vermijdt enkele vaak ongewenste interacties met reeds en niet bestaande links).
Als je alleen wilt dat het werkt, gebruik dan Optie A, als iemand anders gaat kijken naar wat je hebt gedaan, gebruik dan Optie C.
Het voorbeeld waar veel mensen die deze vraag stellen naar op zoek zijn is denk ik het volgende. Als je in de map bent waar je de inhoud van de git repository naar gedumpt wilt hebben, voer dan uit:
git clone [email protected]:whatever .
De "." aan het eind specificeert de huidige map als de checkout map.
Als je de bestanden verplaatst naar waar je ze wilt hebben, verplaats je dan ook de .git
directory? Afhankelijk van je OS en configuratie, kan deze map verborgen zijn.
Het bevat de repo en de ondersteunende bestanden, terwijl de project bestanden die in je /public
directory staan alleen de versies in de huidige uitgecheckte commit zijn (master branch standaard).