git remote
SVN gebruikt één gecentraliseerde repository die dient als communicatiecentrum voor ontwikkelaars. Samenwerking vindt plaats door wijzigingensets door te geven tussen de werkkopieën van de ontwikkelaars en de centrale repository. Het samenwerkingsmodel van Git geeft ontwikkelaars hun eigen kopie van de repository, compleet met hun eigen lokale geschiedenis en branchstructuur. Gebruikers moeten doorgaans een reeks commits delen in plaats van een enkele wijzigingenset. In plaats van een wijzigingenset van een werkkopie naar de centrale repository te committen, laat Git je hele branches delen tussen repository's.
De opdracht git remote
is een onderdeel van het bredere systeem dat verantwoordelijk is voor het synchroniseren van wijzigingen. Records die met de opdracht git remote
zijn geregistreerd, worden gebruikt in combinatie met de opdrachten git fetch, git push en git pull. Deze opdrachten hebben allemaal hun eigen synchronisatieverantwoordelijkheden, die je kunt vinden via de bijbehorende links.
git remote
Met de opdracht git remote
kun je koppelingen naar andere repository's aanmaken, bekijken en verwijderen. Externe koppelingen lijken meer op bladwijzers dan op directe links naar andere repository's. In plaats van realtime toegang tot een andere repository te bieden, dienen ze als handige namen die kunnen worden gebruikt om te verwijzen naar een niet zo handige URL.
Het volgende diagram toont bijvoorbeeld twee externe koppelingen van je repo naar de centrale repository en de repository van een andere ontwikkelaar. In plaats van ernaar te verwijzen met hun volledige URL's, kun je de sneltoetsen 'origin' en 'john' doorgeven aan andere Git-opdrachten.
gerelateerd materiaal
Uitgebreid Git log
Oplossing bekijken
Git leren met Bitbucket Cloud
Overzicht van het gebruik van 'git remote'
De opdracht git remote
is in wezen een interface voor het beheren van een lijst van externe items die zijn opgeslagen in het ./.git/config
-bestand van de repository. De volgende opdrachten worden gebruikt om de huidige status van de externe lijst te bekijken.
'git remote'-configuraties weergeven
git remote
Maak een lijst van de externe koppelingen die je hebt met andere repository's.
git remote -v
Hetzelfde als de bovenstaande opdracht, maar vermeld de URL van elke koppeling.
'git remote'-configuraties maken en wijzigen
De opdracht git remote
is ook handig en behulpzaam om het ./.git/config
-bestand van een repo aan te passen. Met de onderstaande opdrachten kun je koppelingen met andere repository's beheren. De volgende opdrachten zullen het /.git/config
-bestand van de repo aanpassen. Het resultaat van de volgende opdrachten kan ook worden bereikt door het ./.git/config
-bestand rechtstreeks te bewerken met een teksteditor.
git remote add <name> <url>
Maak een nieuwe koppeling met een externe repository. Nadat je een externe locatie hebt toegevoegd, kun je <url>
in andere Git-opdrachten.
git remote rm <name>
Verwijder de koppeling met de externe repository, genaamd
git remote rename <old-name> <new-name>
Hernoem een externe koppeling van naar
Discussie over git remote
Git is ontworpen om ontwikkelaars een volledig geïsoleerde ontwikkelomgeving te bieden. Informatie kan dus niet automatisch heen en weer worden doorgegeven tussen repository's. In plaats daarvan moeten ontwikkelaars stroomopwaartse commits handmatig naar hun lokale repository halen of lokale commits handmatig terugsturen naar de centrale repository. De opdracht git remote
biedt eigenlijk gewoon een eenvoudigere manier om URL's door te geven aan deze commando's waarmee je kunt 'delen'.
De origin remote
Wanneer je een repository kloont met git clone,
wordt er automatisch een externe koppeling gemaakt, genaamd 'origin', die terugverwijst naar de gekloonde repository. Dit is handig voor ontwikkelaars die een lokale kopie van een centrale repository maken, omdat het een eenvoudige manier is om stroomopwaarts wijzigingen op te halen lokale commits te publiceren. Dit gedrag is ook de reden waarom de meeste Git-projecten de oorsprong van hun centrale repository aanroepen.
URL's van repository's
Git ondersteunt vele manieren om naar een externe repository te verwijzen. Twee van de eenvoudigste manieren om toegang tot een externe repository te krijgen, zijn via de HTTP- en SSH-protocollen. HTTP is een eenvoudige manier om anonieme, alleen-lezentoegang tot een repository mogelijk te maken. Bijvoorbeeld:
http://host/path/to/repo.git
Maar over het algemeen is het niet mogelijk om commits naar een HTTP-adres te pushen (anonieme pushes zou je sowieso niet moeten toestaan). Voor lees- en schrijftoegang moet je in plaats daarvan SSH gebruiken:
ssh://user@host/path/to/repo.git
Je hebt een geldig SSH-account nodig op de hostmachine, maar verder ondersteunt Git standaard geverifieerde toegang via SSH. Moderne, veilige hostingoplossingen van derden, zoals Bitbucket.com, zullen deze URL's voor je beschikbaar stellen.
Git remote-opdrachten
De opdracht git remote
is een van de vele Git-opdrachten waaraan extra 'subopdrachten' moeten worden toegevoegd. Hieronder volgt een overzicht van de veelgebruikte git remote
-subopdrachten.
ADD <NAME> <URL>
Voegt een record toe aan ./.git/config
voor de externe locatie met de naam <url>.
Accepteert de optie -f
, waarbij de git fetch
direct na het aanmaken van het externe record wordt opgehaald.
Accepteert de optie --tags
, waarbij de git fetch
onmiddellijk wordt opgehaald en elke tag uit de externe repository wordt geïmporteerd.
RENAME <OLD> <NEW>
Werkt ./.git/config
bij om het record <OLD>
te hernoemen naar <NEW>
. Alle branches voor tracering op afstand en de configuratie-instellingen voor de afstandsbediening worden bijgewerkt.
REMOVE or RM <NAME>
Wijzigt ./.git/config
en verwijdert de externe locatie met de naam <NAME>
. Alle branches voor tracering op afstand en de configuratie-instellingen voor de afstandsbediening worden verwijderd.
GET-URL <NAME>
Geeft de URL's voor een remote record weer.
Accepteert --push
: push-URL's worden opgevraagd in plaats van dat URL's worden opgehaald.
Met --all
worden alle URL's voor de externe locatie vermeld.
SHOW <NAME>
Geeft uitgebreide informatie weer over de externe locatie <NAME>
.
PRUNE <NAME>
Verwijdert alle lokale branches voor <NAME>
die niet aanwezig zijn in de externe repository.
Accepteert een --dry-run
-optie die aangeeft welke branches moeten worden opgeschoond zonder deze daadwerkelijk op te schonen.
Voorbeelden van git remote
Naast 'origin' is het vaak handig om een koppeling te hebben met de repository's van je teamgenoten. Als je collega John bijvoorbeeld een openbaar toegankelijke repository bijhield op dev.example.com/john.git
, zou je als volgt een koppeling kunnen toevoegen:
git remote add john http://dev.example.com/john.git
Met dit soort toegang tot de repository's van afzonderlijke ontwikkelaars is het mogelijk om buiten de centrale repository samen te werken. Dit kan erg handig zijn voor kleine teams die aan een groot project werken.
Je externe locaties laten zien
De opdracht git remote
geeft standaard een lijst weer van eerder opgeslagen externe koppelingen met andere repository's. Dit levert een uitvoer van één regel op met de namen van de 'bladwijzernaam' van externe repo's.
$ git remote
origin
upstream
other_users_repo
Als je git remote
aanroept met de optie -v
, wordt de lijst met namen van de repository's weergegeven met bladwijzers en daarnaast de corresponderende URL van de repository. De optie -v
staat voor 'verbose' of uitgebreid. Hieronder zie je voorbeelduitvoer van een uitgebreide git remote
-opdracht.
git remote -v
origin git@bitbucket.com:origin_user/reponame.git (fetch)
origin git@bitbucket.com:origin_user/reponame.git (push)
upstream https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo https://bitbucket.com/other_users_repo/reponame (push)
Externe repository's toevoegen
De opdracht git remote add
zal een nieuw koppelingsrecord aanmaken naar een externe repository. Nadat je een externe locatie hebt toegevoegd, kun je ./.git/config
-bestand van de repository. Hieronder volgt een voorbeeld van deze update van het configuratiebestand:
$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"]
url = https://bitbucket.com/upstream_user/reponame.git
fetch = +refs/heads/*:refs/remotes/remote_test/*
Een externe locatie inspecteren
De subopdracht 'show' kan aan git remote
worden toegevoegd om gedetailleerde output te geven over de configuratie van een externe locatie. Deze output bevat een lijst van branches die aan de externe locatie zijn gekoppeld, en ook de bijbehorende eindpunten voor ophalen en pushen.
git remote show upstream
* remote upstream
Fetch URL: https://bitbucket.com/upstream_user/reponame.git
Push URL: https://bitbucket.com/upstream_user/reponame.git
HEAD branch: main
Remote branches:
main tracked
simd-deprecated tracked
tutorial tracked
Local ref configured for 'git push':
main pushes to main (fast-forwardable)
Fetch en pull gebruiken voor externe Git-locaties
Zodra een extern record met behulp van de opdracht git remote
is geconfigureerd, kan de externe naam als argument worden doorgegeven aan andere Git-opdrachten om te communiceren met de externe repo. Zowel git fetch als git pull kunnen worden gebruikt om te lezen vanuit een externe repository. Beide opdrachten hebben verschillende bewerkingen die nader worden uitgelegd op de respectievelijke pagina's.
Pushen naar externe Git-locaties
De git push
-opdracht wordt gebruikt om inhoud te uploaden naar een externe repository.
git push <remote-name> <branch-name>
In dit voorbeeld wordt de lokale staat van <remote-name>
.
Externe locaties hernoemen en verwijderen
git remote rename <old-name> <new-name>
De opdracht git remote
rename spreekt voor zich. Wanneer deze opdracht wordt uitgevoerd, wordt de naam van een externe koppeling gewijzigd van <new-name>
. Bovendien wordt hiermee de inhoud van ./.git/config
aangepast om de record voor de externe locatie daar ook een andere naam te geven.
git remote rm <name>
De opdracht git remote rm
verwijdert de koppeling met de externe repository, die is gespecificeerd met de parameter git remote rm remote_test
uitvoeren en vervolgens de inhoud van ./.git/config
bekijken, kunnen we zien dat het [remote "remote_test"]
-record er niet meer is.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.