Hoe maak je een Pull Request op GitHub | DigitaleOceaan (2023)

Invoering

Git is een open-source gedistribueerd versiebeheersysteem dat samenwerkingssoftwareprojecten beter beheersbaar maakt. Veel projecten bewaren hun bestanden in een Git-repository, en platforms zoals GitHub hebben het delen van en bijdragen aan code toegankelijk, waardevol en effectief gemaakt.

Open-sourceprojecten die in openbare repository's worden gehost, profiteren van de bijdragen van de bredere ontwikkelaarsgemeenschaptrek verzoeken, waarin wordt gevraagd dat een project de wijzigingen accepteert die u in de coderepository hebt aangebracht.

Deze tutorial begeleidt je bij het maken van een pull-verzoek naar een Git-repository via de opdrachtregel, zodat je kunt bijdragen aan open-source softwareprojecten.

Vereisten

Je zou Git op je lokale computer moeten hebben geïnstalleerd. U kunt controleren of Git op uw computer is geïnstalleerd en het installatieproces voor uw besturingssysteem doorlopen door het volgende te volgendeze gids.

Je moet ook een GitHub-account hebben of aanmaken. U kunt dit doen via de GitHub-website,github.comen kunt u inloggen of uw account aanmaken.

Vanaf november 2020 heeft GitHub wachtwoordgebaseerde authenticatie verwijderd. Om deze reden moet u eenpersoonlijk toegangstokenof voeg jouw toeInformatie over de openbare SSH-sleutelom toegang te krijgen tot GitHub-repository's via de opdrachtregel.

Ten slotte moet u een open-sourcesoftwareproject identificeren waaraan u kunt bijdragen. U kunt meer vertrouwd raken met open-sourceprojecten door dit door te lezendeze introductie.

Maak een kopie van de repository

Aopslagplaats, ofrepositoryKortom, is in wezen de hoofdmap van een project. De repository bevat alle relevante projectbestanden, inclusief documentatie, en bewaart ook de revisiegeschiedenis van elk bestand. Op GitHub kunnen opslagplaatsen meerdere bijdragers hebben en zowel openbaar als privé zijn.

Om aan een open-sourceproject te kunnen werken, moet je eerst je eigen kopie van de repository maken. Om dit te doen, moet u de repository splitsen en vervolgens klonen, zodat u een lokale werkkopie heeft.

Vork de opslagplaats

Je kunt een repository op GitHub afsplitsen door met je browser naar de GitHub-URL te navigeren van het open-sourceproject waaraan je wilt bijdragen.

GitHub-repository-URL's verwijzen naar zowel de gebruikersnaam die is gekoppeld aan de eigenaar van de repository, als naar de naam van de repository. Bijvoorbeeld DigitalOcean Community (gebruikersnaam:doe-gemeenschap) is de eigenaar van decloud_haikuprojectrepository, dus de GitHub-URL voor dat project is:

https://github.com/do-community/cloud_haiku

In het bovenstaande voorbeelddoe-gemeenschapis de gebruikersnaam encloud_haikuis de naam van de opslagplaats.

Zodra u het project heeft geïdentificeerd waaraan u wilt bijdragen, kunt u naar de URL navigeren, die er als volgt uitziet:

https://github.com/gebruikersnaam/opslagplaats

Of u kunt naar het project zoeken met behulp van de GitHub-zoekbalk.

Wanneer u zich op de hoofdpagina van de repository bevindt, aVorkDe knop wordt rechtsboven op de pagina weergegeven, onder uw gebruikerspictogram:

Hoe maak je een Pull Request op GitHub | DigitaleOceaan (1)

Klik op deVorkknop om het vorkproces te starten. In uw browservenster ontvangt u een melding dat de repository die u zoekt, wordt verwerkt:

Hoe maak je een Pull Request op GitHub | DigitaleOceaan (2)

Zodra het proces is voltooid, gaat uw browser naar een scherm dat lijkt op het vorige repositoryscherm, behalve dat u bovenaan uw gebruikersnaam vóór de repositorynaam ziet, en in de URL staat ook uw gebruikersnaam vóór de repositorynaam.

Dus in het bovenstaande voorbeeld in plaats vandoe-community / cloud_haikubovenaan de pagina zie je hetje gebruikersnaam/ cloud_haiku, en de nieuwe URL ziet er ongeveer zo uit:

https://github.com/je gebruikersnaam/cloud_haiku

Nu de repository is gevorkt, bent u klaar om deze te klonen, zodat u over een lokale werkkopie van de codebasis beschikt.

Kloon de opslagplaats

Om uw eigen lokale kopie te maken van de repository waaraan u wilt bijdragen, openen we eerst een terminalvenster.

We gebruiken degit klooncommando samen met de URL die naar uw fork van de repository verwijst.

Deze URL zal vergelijkbaar zijn met de URL hierboven, behalve dat deze nu eindigt met.git. In decloud_haikuIn het bovenstaande voorbeeld ziet de URL er ongeveer zo uit, waarbij uw daadwerkelijke gebruikersnaam wordt vervangenje gebruikersnaam:

https://github.com/je gebruikersnaam/cloud_haiku.git

U kunt de URL ook kopiëren door gebruik te maken van de groene“⤓ Code”knop van uw repositorypagina die u van de oorspronkelijke repositorypagina hebt afgeleid. Zodra u op de knop klikt, kunt u de URL kopiëren door op de klembordknop naast de URL te klikken:

Hoe maak je een Pull Request op GitHub | DigitaleOceaan (3)

Zodra we de URL hebben, zijn we klaar om de repository te klonen. Om dit te doen, combineren we degit kloonopdracht met de repository-URL vanaf de opdrachtregel in een terminalvenster:

gitkloon https://github.com/je gebruikersnaam/opslagplaats.git

Nu we een lokale kopie van de code hebben, kunnen we verder gaan met het maken van een nieuwe branch waarop we met de code kunnen werken.

Maak een nieuwe vestiging

Wanneer u aan een samenwerkingsproject werkt, zullen u en andere programmeurs die aan de repository bijdragen, in één keer verschillende ideeën hebben voor nieuwe functies of oplossingen. Sommige van deze nieuwe functies zullen niet veel tijd vergen om te implementeren, maar sommige zullen doorlopend worden uitgevoerd. Daarom is het belangrijk om de repository te vertakken, zodat u de workflow kunt beheren, uw code kunt isoleren en kunt bepalen welke functies teruggaan naar de hoofdtak van de projectrepository.

De primaire tak van een projectrepository wordt gewoonlijk devoornaamsttak. Een aanbevolen praktijk is om alles op de hoofdvertakking te beschouwen als inzetbaar voor anderen om op elk moment te gebruiken.

Opmerking: In juni 2020 heeft GitHub zijn terminologie bijgewerkt om te verwijzen naar standaardbroncodevertakkingen als devoornaamstvestiging, in plaats van demeestertak. Als uw standaardvertakking nog steeds verschijnt alsmeesterje kunt het updaten naarvoornaamstdoorhet wijzigen van de standaardfiliaalinstellingen.

Wanneer u een vertakking maakt op basis van het bestaande project, is het erg belangrijk dat u uw nieuwe vertakking buiten de hoofdvertakking maakt. Zorg er ook voor dat uw filiaalnaam beschrijvend is. In plaats van te bellenmijn-filiaal, je zou voor zoiets moeten gaanfrontend-hook-migratieoffix-documentatie-typefoutenin plaats van.

Om de branch vanuit ons terminalvenster te maken, veranderen we onze directory zodat we in de directory van de repository werken. Zorg ervoor dat u de daadwerkelijke naam van de repository gebruikt (zoalscloud_haiku) om naar die map te gaan.

CDopslagplaats

Nu zullen we onze nieuwe tak creëren met degit-takcommando. Zorg ervoor dat u het een beschrijvende naam geeft, zodat anderen die aan het project werken, begrijpen waar u aan werkt.

gittaknieuwe tak

Nu onze nieuwe branch is gemaakt, kunnen we overschakelen om er zeker van te zijn dat we aan die branch werken door degit afrekenencommando:

gituitcheckennieuwe tak

Zodra u degit afrekenenopdracht, ontvangt u de volgende uitvoer:

Uitvoer

Overgestapt naar vestiging 'nieuwe vestiging'

Als alternatief kun je de twee bovenstaande commando's samenvatten, een nieuwe branch creëren en er naar overschakelen, met het volgende commando en-Bvlag:

gituitchecken-B nieuwe tak

Als u terug wilt schakelen naarvoornaamst, je gebruikt deuitcheckencommando met de naam van de hoofdtak:

gitafrekenen hoofd

DeuitcheckenMet command kunt u schakelen tussen meerdere vertakkingen, zodat u mogelijk aan meerdere functies tegelijk kunt werken.

Op dit punt kunt u nu bestaande bestanden wijzigen of nieuwe bestanden toevoegen aan het project op uw eigen branch.

Breng lokaal wijzigingen aan

Laten we het voorbeeld gebruiken om het maken van een pull-verzoek te demonstrerencloud_haikurepo en maak een nieuw bestand in onze lokale kopie. Gebruik de teksteditor van uw voorkeur om een ​​nieuw bestand te maken, zodat we een nieuw haiku-gedicht kunnen toevoegen, zoals uitgelegd in derichtlijnen bijdragen. We kunnen bijvoorbeeld nano gebruiken en ons voorbeeldbestand aanroepenbestandsnaam.md. U moet uw bestand een originele naam geven met de.mdextensie voor Markdown.

nano bestandsnaam.md

Vervolgens voegen we wat tekst toe aan het nieuwe bestand, volgens hetrichtlijnen bijdragen. We moeten het Jekyll-formaat gebruiken en een haiku met regeleinden toevoegen. Het volgende bestand is een voorbeeldbestand, omdat u een originele haiku moet bijdragen.

bestandsnaam.md

---lay-out: haikutitel: Octopus Cloudauteur: Sammy---Gedistribueerde cloud 
Net als de geesten van de octopussen
Over het hele netwerk

Nadat u uw tekst heeft toegevoegd, slaat u het bestand op en sluit u het. Als je nano hebt gebruikt, doe dit dan door op te drukkenCTRL+X, DanY, en danBINNENKOMEN.

Zodra u een bestaand bestand heeft gewijzigd of een nieuw bestand aan het project van uw keuze heeft toegevoegd, kunt u het naar uw lokale repository plaatsen, wat we kunnen doen met degit toevoegencommando. In ons voorbeeld,bestandsnaam.md, typen we de volgende opdracht.

git toevoegen bestandsnaam.md 

We hebben de naam van het bestand dat we hebben gemaakt aan deze opdracht doorgegeven om het naar onze lokale repository te brengen. Dit zorgt ervoor dat uw bestand klaar is om te worden toegevoegd.

Als u alle bestanden die u hebt gewijzigd in een bepaalde map wilt toevoegen, kunt u ze allemaal klaarzetten met de volgende opdracht:

git toevoegen . 

Hier voegt de punt of punt alle relevante bestanden toe.

Als u alle wijzigingen recursief wilt toevoegen, inclusief die in submappen, typt u:

git toevoegen -A

Of u kunt typengit voeg -all toevoor alle nieuwe bestanden die moeten worden geënsceneerd.

Nu ons bestand is geënsceneerd, willen we de wijzigingen vastleggen die we in de repository hebben aangebracht met degit commitcommando.

Wijzigingen doorvoeren

Decommit berichtis een belangrijk aspect van uw codebijdrage; het helpt de beheerders en andere bijdragers om de wijziging die u heeft aangebracht volledig te begrijpen, waarom u deze heeft aangebracht en hoe belangrijk deze is. Bovendien bieden commit-berichten een historisch overzicht van de wijzigingen voor het project als geheel, waardoor toekomstige bijdragers onderweg geholpen kunnen worden.

Als we een heel kort bericht hebben, kunnen we dat opnemen met de-Mvlag en het bericht tussen aanhalingstekens. In ons voorbeeld van het toevoegen van een haiku, onzegit commitkan vergelijkbaar zijn met het volgende.

gitverbinden-M "Een nieuwe haiku toegevoegd in het bestand bestandsnaam.md"

Tenzij het een kleine of verwachte verandering is, willen we misschien een langer commit-bericht toevoegen, zodat onze medewerkers volledig op de hoogte zijn van onze bijdrage. Om dit grotere bericht op te nemen, zullen we degit commitcommando waarmee de standaard teksteditor wordt geopend:

gitverbinden

Wanneer u deze opdracht uitvoert, merkt u mogelijk dat u zich in de vim-editor bevindt, die u kunt afsluiten door te typen:Q. Als u uw standaardteksteditor wilt configureren, kunt u dit doen met degit-configcommando en stel nano in als de standaardeditor, bijvoorbeeld:

gitconfiguratie--globaalkern.editor"nano"

Of vim:

gitconfiguratie--globaalkern.editor"vim"

Na het uitvoeren van degit commitAfhankelijk van de standaard teksteditor die u gebruikt, zou uw terminalvenster een document moeten weergeven dat u kunt bewerken en dat er ongeveer zo uitziet:

GNU nano 2.0.6 Bestand: …gebruikersnaam/repository/.git/COMMIT_EDITMSG

# Voer het commit-bericht in voor uw wijzigingen. Regels die # beginnen met '#' worden genegeerd, en een leeg bericht breekt de commit af.# Op branchnieuwe tak# Uw branche is up-to-date met 'oorsprong/nieuwe tak'.## Wijzigingen die moeten worden doorgevoerd:# aangepast:nieuwe functie.py#

Onder de inleidende opmerkingen moet u het commit-bericht aan het tekstbestand toevoegen.

Om een ​​nuttig commit-bericht te schrijven, moet u op de eerste regel een samenvatting van ongeveer 50 tekens lang plaatsen. Hieronder, en opgesplitst in begrijpelijke secties, moet u een beschrijving opnemen die de reden aangeeft waarom u deze wijziging heeft aangebracht, hoe de code werkt, en aanvullende informatie die het contextualiseert en verduidelijkt zodat anderen het werk kunnen beoordelen wanneer het wordt samengevoegd. Probeer zo behulpzaam en proactief mogelijk te zijn om ervoor te zorgen dat degenen die het project onderhouden uw bijdrage volledig kunnen begrijpen.

Wijzigingen pushen

Zodra je het tekstbestand van het commit-bericht hebt opgeslagen en afgesloten, kun je verifiëren wat Git gaat committen met het volgende commando:

gittoestand

Afhankelijk van de wijzigingen die u heeft aangebracht, ontvangt u uitvoer die er ongeveer zo uitziet:

Uitvoer

Op taknieuwe takniets te plegen, boom schoon werken

Op dit punt kunt u gebruik maken van degit pushcommando om de wijzigingen naar de huidige tak van uw gevorkte repository te pushen:

gitpush --set-upstream oorsprong nieuwe branch

De opdracht geeft u uitvoer om u op de hoogte te stellen van de voortgang, en deze zal vergelijkbaar zijn met het volgende:

Uitvoer

Objecten tellen: 3, klaar. Deltacompressie met maximaal 4 threads. Objecten comprimeren: 100% (2/2), klaar. Objecten schrijven: 100% (3/3), 336 bytes | 0 bytes/s, klaar.Totaal 3 (delta 0), hergebruikt 0 (delta 0)Naar https://github.com/je gebruikersnaam/opslagplaats.git a1f29a6..79c0e80nieuwe tak->nieuwe takTaknieuwe takingesteld om externe vertakking te volgennieuwe takvan oorsprong.

Je kunt nu naar de gevorkte repository op je GitHub-webpagina navigeren en naar de branch gaan die je hebt gepusht om de wijzigingen te zien die je in de browser hebt aangebracht.

Op dit punt is het mogelijk omeen pull-request doennaar de oorspronkelijke repository, maar als u dit nog niet heeft gedaan, moet u ervoor zorgen dat uw lokale repository up-to-date is met de upstream-repository.

Update lokale opslagplaats

Terwijl u samen met andere bijdragers aan een project werkt, is het belangrijk dat u uw lokale repository up-to-date houdt met het project, omdat u geen pull-request wilt indienen voor code die automatisch conflicten veroorzaakt (hoewel in gezamenlijke codeprojecten, conflicten zullen onvermijdelijk voorkomen). Om uw lokale kopie van de codebasis up-to-date te houden, moet u wijzigingen synchroniseren.

We bespreken eerst het configureren van een afstandsbediening voor de fork en vervolgens het synchroniseren van de fork.

Configureer een afstandsbediening voor de vork

Externe opslagplaatsenmaken het voor u mogelijk om met anderen aan een Git-project samen te werken. Elke externe repository is een versie van het project die wordt gehost op internet of op een netwerk waartoe u toegang hebt. Elke externe repository moet voor u toegankelijk zijn als alleen-lezen of als lezen-schrijven, afhankelijk van uw gebruikersrechten.

Om de wijzigingen die u in een fork aanbrengt te kunnen synchroniseren met de oorspronkelijke repository waarmee u werkt, moet u een afstandsbediening configureren die verwijst naar de upstream-repository. U dient de afstandsbediening slechts één keer in te stellen op de upstream-repository.

Laten we eerst controleren welke externe servers u heeft geconfigureerd. Degit op afstandHet commando zal de externe repository weergeven die je al hebt gespecificeerd, dus als je je repository hebt gekloond zoals we hierboven hebben gedaan, zul je op zijn minst uitvoer ontvangen met betrekking tot de oorspronkelijke repository, wat de standaardnaam is die door Git is gegeven voor de gekloonde map.

Laten we vanuit de map van de repository in ons terminalvenster degit op afstandopdracht samen met de-vflag om de URL’s weer te geven die Git heeft opgeslagen, samen met de relevante korte namen op afstand (zoals in “origin”):

gitop afstand-v

Omdat we een repository hebben gekloond, zou onze uitvoer er ongeveer zo uit moeten zien:

Uitvoer

oorsprong https://github.com/je gebruikersnaam/gevorkte-repository.git (ophalen)origin https://github.com/je gebruikersnaam/gevorkte-repository.git (push)

Als u eerder meer dan één afstandsbediening hebt ingesteld, wordt degit op afstand -vcommando geeft een lijst van allemaal.

Vervolgens specificeren we een nieuwe externe upstream-repository die we met de fork kunnen synchroniseren. Dit zal de originele repository zijn waaruit we zijn geforkt. Dit doen wij met degit op afstand toevoegencommando.

gitop afstandtoevoegenstroomopwaarts https://github.com/oorspronkelijke-eigenaar-gebruikersnaam/origineel-repository.git

Voor onzecloud_haikuDit commando zou bijvoorbeeld het volgende zijn:

gitop afstandtoevoegenupstream https://github.com/do-community/cloud_haiku.git

In dit voorbeeldstroomopwaartsis de korte naam die we hebben opgegeven voor de externe repository, omdat in termen van Git “upstream” verwijst naar de repository waaruit we hebben gekloond. Als we een externe aanwijzer willen toevoegen aan de repository van een bijdrager, willen we mogelijk de gebruikersnaam van die medewerker of een verkorte bijnaam voor de korte naam opgeven.

We kunnen verifiëren dat onze externe verwijzing naar de upstream-repository correct is toegevoegd door gebruik te maken van degit op afstand -vopdracht opnieuw vanuit de repositorymap:

gitop afstand-v

Uitvoer

oorsprong https://github.com/je gebruikersnaam/gevorkte-repository.git (ophalen)origin https://github.com/je gebruikersnaam/gevorkte-repository.git (push)upstream https://github.com/oorspronkelijke-eigenaar-gebruikersnaam/origineel-repository.git (ophalen) upstream https://github.com/oorspronkelijke-eigenaar-gebruikersnaam/origineel-repository.git (push)

Nu kunt u ernaar verwijzenstroomopwaartsop de opdrachtregel in plaats van de volledige URL te schrijven, en u bent klaar om uw fork te synchroniseren met de oorspronkelijke repository.

Synchroniseer de vork

Zodra we een afstandsbediening hebben geconfigureerd die verwijst naar de upstream en originele repository op GitHub, zijn we klaar om onze fork van de repository te synchroniseren om deze up-to-date te houden.

Om onze fork te synchroniseren, gebruiken we vanuit de map van onze lokale repository in een terminalvenster degit ophalencommando om de branches samen met hun respectievelijke commits op te halen uit de upstream repository. Omdat we de korte naam ‘upstream’ hebben gebruikt om naar de upstream-repository te verwijzen, geven we die door aan de opdracht.

gitstroomopwaarts halen

Afhankelijk van hoeveel wijzigingen er zijn aangebracht sinds we de repository hebben gesplitst, kan uw uitvoer anders zijn en enkele regels bevatten over het tellen, comprimeren en uitpakken van objecten. Uw uitvoer eindigt op dezelfde manier als de volgende regels, maar kan variëren afhankelijk van het aantal vertakkingen dat deel uitmaakt van het project:

Uitvoer

Van https://github.com/oorspronkelijke-eigenaar-gebruikersnaam/origineel-repository* [nieuwe tak] hoofd -> stroomopwaarts/hoofd

Nu zullen commits naar de hoofdbranch worden opgeslagen in een lokale branch genaamdstroomopwaarts/hoofd.

Laten we overschakelen naar de lokale hoofdtak van onze repository:

gitafrekenen hoofd

Uitvoer

Overgeschakeld naar filiaal 'hoofd'

We zullen nu alle wijzigingen samenvoegen die zijn aangebracht in de hoofdvertakking van de oorspronkelijke repository, waartoe we toegang hebben via onze lokalestroomopwaarts/hoofdvestiging, met onze lokale hoofdvestiging:

gitstroomopwaarts/hoofd samenvoegen

De uitvoer hier zal variëren, maar het zal beginnen metUpdatenals er wijzigingen zijn aangebracht, ofAl bijgewerkt. als er geen wijzigingen zijn aangebracht sinds u de repository hebt geforkt.

De hoofdtak van je fork is nu gesynchroniseerd met de upstream-repository en eventuele lokale wijzigingen die je hebt aangebracht, zijn niet verloren gegaan.

Afhankelijk van uw eigen workflow en de hoeveelheid tijd die u besteedt aan het aanbrengen van wijzigingen, kunt u uw fork zo vaak als zinvol voor u is, synchroniseren met de upstream-code van de oorspronkelijke repository. Maar u moet uw fork zeker synchroniseren vlak voordat u een pull-verzoek indient, om er zeker van te zijn dat u niet automatisch conflicterende code bijdraagt.

Pull-aanvraag maken

Op dit punt bent u klaar om een ​​pull-aanvraag in te dienen bij de oorspronkelijke repository.

U moet naar uw gevorkte repository navigeren en op drukkenNieuw pull-verzoekknop aan uw linkerkant van de pagina.

Hoe maak je een Pull Request op GitHub | DigitaleOceaan (4)

Op het volgende scherm kunt u de vertakking wijzigen. Aan beide kanten kunt u de juiste repository selecteren in het vervolgkeuzemenu en de juiste vertakking.

Zodra u bijvoorbeeld de hoofdtak van de oorspronkelijke repository aan de linkerkant hebt gekozen, en denieuwe takvan uw gevorkte repository aan de rechterkant, zou u een scherm moeten ontvangen waarin staat dat uw branches kunnen worden samengevoegd als er geen concurrerende code is:

Hoe maak je een Pull Request op GitHub | DigitaleOceaan (5)

U moet een titel en commentaar toevoegen aan de juiste velden en vervolgens op drukkenPull-aanvraag makenknop.

Op dit punt zullen de beheerders van de oorspronkelijke repository beslissen of ze uw pull-verzoek wel of niet accepteren. Ze kunnen u vragen uw code te bewerken of te herzien voordat ze het pull-verzoek accepteren door een codebeoordeling in te dienen.

Conclusie

Op dit punt hebt u met succes een pull-verzoek naar een open-source softwareopslagplaats verzonden. Hierna moet u ervoor zorgen dat u uw code bijwerkt en opnieuw baseert terwijl u wacht totdat deze wordt beoordeeld. Projectbeheerders kunnen u vragen uw code te herwerken, dus u moet daartoe bereid zijn.

Bijdragen aan open-sourceprojecten – en een actieve open-source-ontwikkelaar worden – kan een lonende ervaring zijn. Door regelmatig bijdragen te leveren aan software die u vaak gebruikt, kunt u ervoor zorgen dat die software zo waardevol mogelijk is voor andere eindgebruikers.

Als je meer wilt weten over Git en wilt samenwerken aan open-source software, kun je onze tutorialreeks lezen met de titelEen inleiding tot open source. Als je al bekend bent met Git en een spiekbriefje wilt, kun je verwijzen naar "Hoe Git te gebruiken: een referentiegids.”

References

Top Articles
Latest Posts
Article information

Author: Cheryll Lueilwitz

Last Updated: 17/08/2023

Views: 5747

Rating: 4.3 / 5 (54 voted)

Reviews: 85% of readers found this page helpful

Author information

Name: Cheryll Lueilwitz

Birthday: 1997-12-23

Address: 4653 O'Kon Hill, Lake Juanstad, AR 65469

Phone: +494124489301

Job: Marketing Representative

Hobby: Reading, Ice skating, Foraging, BASE jumping, Hiking, Skateboarding, Kayaking

Introduction: My name is Cheryll Lueilwitz, I am a sparkling, clean, super, lucky, joyous, outstanding, lucky person who loves writing and wants to share my knowledge and understanding with you.