Tutoriel Linux

Clone een Git-repository onder Linux zonder de verkeerde sleutel of map te kiezen

Débutant4 min de lecture

Een git clone maakt een werkcopy en voegt over het algemeen de externe repository toe onder de naam origin. De valstrik komt voor de eerste opdracht: een SSH-URL gebruikt uw sleutel, een HTTPS-URL vraagt vaak om een token, en de doeldirectory mag geen nuttige bestanden bevatten. Neem twee minuten de tijd om deze drie punten te controleren voordat u een script dat online is opgehaald, uitvoert.

Tux houdt een Git-repository en een SSH-sleutel vast voor twee Linux-kloonpaden
Controleer de URL, de gebruikte sleutel en de doeldirectory voordat u een repository kloont.

Kies HTTPS of SSH voordat u kloont

Gebruik HTTPS om een openbaar project op te halen of wanneer u geen sleutel wilt configureren op deze machine. Om vervolgens naar GitHub, GitLab of uw forge te pushen, is het vaak niet meer genoeg om gewoon het wachtwoord van het account in te voeren: de service vraagt om een persoonlijke toegangstoken.

Gebruik SSH als uw openbare sleutel al aan uw account op de forge is gekoppeld. Deze methode voorkomt dat u een token opnieuw moet invoeren, maar faalt als de verkeerde sleutel wordt voorgesteld of als de SSH-agent deze niet laad. Begin met het lezen van de gebruikte identiteit:

ssh -T [email protected]
ssh-add -l

Pas de eerste host aan aan uw forge. Een authenticatierespons zonder externe shell is normaal bij verschillende Git-hostingdiensten. Als u meerdere sleutels beheert, controleer dan uw bestand ~/.ssh/config met ssh -G [email protected] voordat u Git beschuldigt. Onze gids voor het configureren van SSH voor meerdere servers legt uit hoe u een sleutel en een account aan een alias kunt koppelen.

Maak de kopie in een lege en herkenbare map

Ga naar een directory die is gereserveerd voor uw projecten. Zonder tweede argument maakt Git een map aan met de naam van de repository. Met een expliciete naam voorkomt u verwarring tussen een testkopie en de kopie die uw wijzigingen bevat.

mkdir -p ~/projecten
cd ~/projecten
pwd
ls -la

git clone https://github.com/octocat/Hello-World.git hello-test
cd hello-test

Voer geen clone uit in een map waarvan u de inhoud niet kent. Git weigert over het algemeen een niet-lege directory, maar het blijft veiliger om pwd en ls -la te controleren voordat u de opdracht geeft. Voor een kopie die alleen is bedoeld om de code te bekijken, blijft HTTPS de eenvoudigste keuze.

Met SSH lijkt dezelfde operatie als volgt:

git clone [email protected]:mon-compte/mon-projet.git mon-projet
cd mon-projet

Vervang de host, het account en de repository door de waarden die door uw forge worden weergegeven. Kopieer nooit een URL die u hebt ontvangen in een twijfelachtig bericht. Open eerst de officiële pagina van het project en vergelijk de eigenaar, de naam van de repository en de clonings-URL.

Controleer de remote en bestanden voordat u iets uitvoert

Controleer na de clone de oorsprong, de actieve tak en de status van de directory. Deze opdrachten wijzigen het project niet:

git remote -v
git branch --show-current
git status
git log -1 --oneline
find . -maxdepth 2 -type f -name 'README*' -o -name 'INSTALL*'

git remote -v toont de URL’s die worden gebruikt om wijzigingen op te halen en te verzenden. Controleer ze voordat u een eerste git push uitvoert, vooral als het project een implementatieconfiguratie bevat. Lees daarna de README, de INSTALL-bestanden, de afhankelijkheden en de opstartscripts. Een Git-repository kan een geldig, verouderd of ronduit riskant script bevatten; het verwerft uw vertrouwen niet omdat de clone succesvol was.

Om later een update op te halen, blijf in de gekloonde map en begin met het controleren van uw werk:

git status
git fetch origin
git log --oneline HEAD..origin/$(git branch --show-current)
git pull --ff-only

git pull --ff-only weigert een automatische samensmelting als uw lokale commits en de externe repository verschillen. Dit is beter dan een update die wijzigingen mengt terwijl u de tak en de remote nog niet hebt bekeken.

De officiële documentatie van git clone geeft details over opties zoals --depth, --branch en --recurse-submodules. Bewaar ze voor een specifieke behoefte. Voor een eerste clone zijn een geverifieerde URL, een schone map en het lezen van de README al voldoende om de meeste fouten te vermijden.

sudo apt update && sudo apt upgrade