Dit is hoe je je werk deelt op een git remote repository



Deel uw lokale werk met het team op een externe opslagplaats, leer ook om het te beheren terwijl u de wijzigingen bijhoudt en blijf op de hoogte.

Je werk voegt meer waarde toe wanneer het wordt gepubliceerd en gedeeld met de wereld (of je team) !!!

Aan de slag

Gaan , zoals u weet, is de meest populaire tool voor versiebeheer die tegenwoordig wordt gebruikt op te slaan , spoor en versie elke soort gegevens .
Enkele van de belangrijkste kenmerken van git zijn zijn snelheid , verdeeld natuur, veiligheid , pijnloos vertakken en samenvoegen samen met samenwerkend werk tussen meerdere bijdragers.

Laten we onze discussie vanaf hier beginnen en ons concentreren op hoe Git u daarbij helpt samenwerken en deel uw werk met collega's, zodat iedereen tegelijkertijd aan dezelfde code kan werken zonder elkaars gegevens te beschadigen.
Dit is waar het concept van externe opslagplaatsen in beeld komen.
Ik neem aan dat je de kunst van van jouw werkmap (bestandssysteem) naar het Verzamelplaats en ten slotte het aan uw lokale repository (database).

Dit inspireert ons om onze data naar het volgende niveau 'Remote repository' te pushen om ze op een remote repository te publiceren.

Zijn mijn gegevens niet al opgeslagen in een git-database?

Ja dat is zo! Zoals aangegeven in het onderstaande diagram bevinden uw gegevens zich echter nog steeds op het lokale database na u plegen het en nog niet gedeeld met je collega's.
4-tier architectuur
Dit artikel vult de kloof tussen het ophalen van onze gegevens van uw lokale repository en het meenemen naar de volgende laag genaamd de externe opslagplaats .





Wat is een externe opslagplaats

Een database met verzamelde informatie die is opgeslagen op een locatie die kan worden gedeeld met je teamgenoten door ze te geven toegang .
Het wordt idealiter gehost op een wolk of op een server (lokaal of op afstand) op internet of uw lokale netwerk.
Een externe repository is net als je lokale git-repository, behalve dat het over het algemeen wordt gedeclareerd als een kale repository, dus om geen werkkopie te hebben zoals je lokale.
Dit wordt gedaan om de directe wijzigingen die op de externe repository zijn aangebracht, te beperken.

Kale opslagplaats concept is een bijkomend voordeel voor een externe repository om het te bewaren beschermd en alleen worden gebruikt om de code onder teamleden te delen.
Dit wordt bereikt door de externe repository als kaal te verklaren door de ‘--alleen maar‘Markeren op het moment dat het wordt geïnitialiseerd als een git-repository.
Door dit te doen, wordt je repo aangemaakt met git metadata of met andere woorden git objecten opgeslagen onder de verborgen ‘.git’ directory alleen en is er geen werkkopie beschikbaar voor iemand om direct data toe te voegen.
Opdracht:git init --bare.

Met dit in gedachten zullen we in de toekomst meer manieren zien om een ​​externe opslagplaats te beheren en hoe we ons lokale werk synchroniseren met de afstandsbediening.



Maak een externe opslagplaats

Eerst en vooral moet u beslissen op een locatie waar u uw externe opslagplaats wilt plaatsen.
Er zijn nogal wat populaire cloudgebaseerde git-hostingrepository's zoals - GitLab , BitBucket , GitHub , Noodgedwongen en CloudForge om er een paar te noemen.
In dit bericht overweeg ik GitHub, omdat dit de plaats is waar ik voor het eerst begon met het bijhouden van mijn git-opslagplaatsen. Om te beginnen hoeft u alleen maar in te loggen op een GitHub-account en vervolgens maak een nieuwe repository aan , dit creëert een URL die verwijst naar deze externe opslagplaats.


Git ondersteunt ssh-, git-, http- en https-protocollen om een ​​repository-URL te adresseren.

Als alternatief kunt u uw project ook ergens anders plaatsen, bijvoorbeeld a Linux-server door de onderstaande opdrachten te volgen
cd $ HOME
mkdir remote_repo
cd remote_repo
git init --bare.

fibonacci iteratieve c ++

Sluit de afstandsbediening aan op uw lokale computer

Als u een afstandsbediening aan uw werkkopie toevoegt, hoeft u alleen maar een pointer referentie handler voor de afstandsbediening of gewoon een ' externe handler '.
Laten we naar mijn project gaan dat ik wil publiceren-cd learnRemotes
Syntaxis:git remote add
Opdracht:git remote add origin https://github.com/divyabhushan/learnRemotes.git

'Oorsprong is de standaard referentienaam voor de externe handler. ' (naam op afstand moet een relevante naam zijn)
Laten we eens kijken of dat werkte, met behulp van de opdracht:git remote

Het deed :)

Druk ook de externe URL af samen met de naam:
git remote -v

Goed gedaan! U bent helemaal klaar om een ​​verbinding tot stand te brengen met uw externe repository vanuit uw lokale werkmap.

Tijd om te publiceren

Syntaxis:git push --all --tags[-u | --set-upstream]
Opdracht:git push oorsprong master

Dus je leest dit als 'Push the diff of commits to origin from local master' .

Als u uw GitHub-account controleert, moeten uw lokale commits (gegevens) daar worden weergegeven-



Takken volgen

U hebt uw werk dus met succes gepubliceerd op de externe opslagplaats.
Het is echter belangrijk dat u uw lokale filiaal opzet naar spoor de veranderingen op de remote branch automatisch.
Gebruik de '--set-upstreamof-u‘Markeer samen met het‘ git push ’commando
Opdracht:git push -u oorsprong master

kleurgecodeerde takken


Laten we verder een nieuwe commit maken op de ‘master’ branch en verifiëren hoe git het detecteert-
Opdracht:git status


Toon de volgvertakkingen in uitgebreide modus
Opdracht:git branch -vv


Daarom is er elke keer een verschil in commits tussen je lokale en externe repository op de getraceerde branch, zal Git je dit laten weten.
Is dat niet cool !!!

Hoe zouden anderen verbinding maken met uw afstandsbediening?

Het is een fluitje van een cent als je kloon een externe opslagplaats !!!

Dus klonen vanuit een externe repository doet eerst twee dingen: je externe referentie wordt automatisch toegevoegd, en de tweede standaard Afdeling ingesteld op spoor afgelegen filiaal automatisch.

Stap 1: Kloon uw externe opslagplaats als een andere gebruiker
Opdracht:git clone https://github.com/divyabhushan/learnRemotes.git developer2
cd-ontwikkelaar2

Stap 2: Laat de afstandsbediening en zijn url zien
Opdracht:git remote -v


Stap 3: Maak een lijst van de trackingtakken
Opdracht:git branch -vv


Het plezier begint wanneer ‘developer2’ zijn / haar eigen werk begint en naar de afstandsbediening pusht.

U kunt verbinding maken en bijdragen aan meer dan één afstandsbediening repository van een enkel project .

Bekijk de afgelegen vestigingen

Opdracht:git branch -r


Gebruik de ‘-a’ optie om zowel lokale als externe filialen af ​​te drukken, probeer het in je lokale repo nadat je een paar lokale filialen hebt aangemaakt.

Hoe anderen bijdragen aan uw afstandsbediening?

Initiële setup
Developer2 besluit een aantal dingen te veranderen, zoals:
naar. Creëer een nieuwe ‘feature’ van de laatste commit op de ‘master’ branch en maak een nieuwe commit op ‘feature’ branch
Opdrachten:
git checkout -b functie
echo 'feature enhancements'> feature.txt
git add. && git commit -m 'functie verbeteringen'

b. Creëer een andere ‘feature2’ branch dan een oudere commit op de ‘master’ branch
Opdrachten:
git checkout -b feature2 95651fb
echo 'feature2 toegevoegd'> feature2.txt
git add. && git commit -m 'Feature2 wijzigingen toevoegen'

Laten we de vertakkingen op de developer2-machine visualiseren, samen met de trackinginformatie:

Zoals je vast moet hebben opgemerkt, zijn de nieuwe branches niet ingesteld om de afgelegen branches te volgen.

Veranderingen naar remote pushen
Laat me eerst de ‘feature’ branch naar remote pushen met ‘–set-upstream of -u’ vlag
Opdracht:git push -u oorsprong functie




Er wordt een nieuwe branch aangemaakt op de remote, als deze nog niet bestaat !!!

Maak op dit moment een lijst van de remote branches met het commando: ‘git branch -r’




Een andere manier om een ​​externe branch te volgen
Laten we verder instellen dat de ‘feature2’ branch ook naar dezelfde ‘feature 'branch op de afstandsbediening verwijst
Opdracht:git branch --set-upstream-to = oorsprong / feature feature2



kleurgecodeerde tak


Een snelle tip: je kunt de naam van de lokale branch weglaten als je al op die branch bent, met andere woorden, de lokale branch is al uitgecheckt.

Maak een lijst van de branches in de uitgebreide modus nog een keer, commando:git branch -vv



Merk op dat zowel de ‘feature’ als ‘feature2’ van de lokale vestigingen naar dezelfde ‘feature’ verwijzen.

Gesynchroniseerd blijven met de afstandsbediening - ophalen, trekken en duwen

Laten we eens kijken naar het gedeelte waar de afgelegen filiaal je tracking is al bijgewerkt, wat dan?
Een eenvoudige 'git status‘Of een‘git checkout‘Of zelfs de‘git branch -vv‘Commando waarschuwt ons met een dergelijke mismatch-



‘Developer2’ moet eerst de lokale verwijzingen en objecten bijwerken (‘ git fetch ‘) En voeg vervolgens de externe en lokale wijzigingen samen (‘ git merge ’).
Interessant is dat je deze twee commando's kunt vervangen door een enkel ‘git pull’ commando.
Syntaxis:Gaan Trekken

–Voor niet-bijgehouden vertakking
Syntaxis: git pull [:]
Opdracht:git pull oorsprong functie: feature2

- voor bijgehouden branch
Syntaxis: git pull
Opdracht:git pull




=> In de praktijk kunnen er in dit stadium conflicten ontstaan ​​als je voor de eenvoud van een afstand trekt. Ik heb een niet-conflicterende commit-wijziging gegenereerd.

Na ‘developer2’ pull (ophalen en samenvoegen) moeten de laatste wijzigingen op afstand nu zijn eigen werk publiceren-
Opdracht:git push oorsprong HEAD: feature
Opmerking: upstream branch ‘feature’ komt niet overeen met de naam van ‘feature2’ van de lokale branch, u moet dit expliciet opgeven



Herinnering : ‘HEAD’ is de laatste commit op de lokale ‘feature2’ branch.

Wanneer ‘git fetch’ gebruiken?
Soms moet u gewoon uw referentiekoppen zonder daadwerkelijk te downloaden (trekken) vanaf de afstandsbediening.
Of als de remote branches zijn gewijzigd / verwijderd bij het updaten, moet je de fetch-opdracht uitvoeren met de ‘--gedroogde pruim' keuze.
Als best practice moet je het ‘git fetch’ -commando elke keer dat je aan je lokale repo begint te werken, uitvoeren.

beheer op afstand

Ten slotte zou u enkele huishoudelijke taken willen uitvoeren, zoals het hernoemen of verwijderen van afstandsbedieningen en filialen.
Deze zijn net zo belangrijk als de vorige commando's.

Hernoem de afstandsbediening

Syntaxis:git remote hernoemen
Opdracht:git remote hernoemen snv_repo svn
Beschouw bijvoorbeeld een projectmanager die is gekoppeld aan 3 projecten:


Verwijder externe referentie

Stel dat u niet meer synchroniseert met een externe opslagplaats, dan zult u waarschijnlijk de verwijzing ernaar verwijderen.
Dit heeft echter geen invloed op de externe opslagplaats en het werk van anderen.

Syntaxis:git remote remove
Opdracht:git remote verwijder proj1


Wat als je een lokale branch had ingesteld om een ​​branch van de verwijderde ‘proj1’ repository te volgen?
Nou, jouw lokale tak (en dus het werk) is veilig en nog steeds aanwezig, alleen zijn remote tracking referentie en configuratie instellingen zullen zijn automatisch verwijderd

Verwijder externe tak

Zeg jij per ongeluk duwde je persoonlijk ruw werk aan een tak naar de afstandsbediening maar wil niet dat anderen het nog controleren -
Verwijder de ‘unfinishedWork’ branch van de remote ‘svn’-
Opdracht:git branch -vv# Maak een lijst van de vertakkingen voor op afstand volgen



Syntaxis:git push --delete
Opdracht:git push --delete svn unfinishedWork


Opheffing

verschil tussen hash-tabel en hash-map

Hiermee komen we aan het einde van dit artikel. Als je dit ' Zelfstudie ' relevant, bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. De Edureka DevOps Certification Training-cursus helpt leerlingen expertise te verwerven in verschillende DevOps-processen en tools zoals Puppet, Jenkins, Nagios en GIT voor het automatiseren van meerdere stappen in SDLC.