Ik vind git moeilijk te begrijpen omdat ik de betekenis van de gebruikte woorden voor de acties niet kon vinden. Ik heb het woordenboek gecontroleerd op de betekenis van “stage” en geen van de betekenissen was gerelateerd aan bronbeheerconcepten.

Wat betekent “stage” in de context van git?

Opmerkingen

  • gerelateerd: Wat is het voordeel van git ‘ s twee -stage commit proces (staging)?
  • Git heeft inderdaad zijn eigen vocabulaire. En aangezien elke instructie is geformuleerd in de speciale woordenschat, is het moeilijk om te beginnen. ” fase ” is git add file.ext doen voor een specifiek bestand, of git add . om alle gewijzigde en niet-bijgehouden bestanden te beïnvloeden. Van bestanden die op deze manier zijn toegevoegd, wordt gezegd dat ze ” staged ” zijn en ze zullen worden opgenomen in de volgende ” commit “. De commit is een momentopname van je werk dat is gemaakt, bijv. met git commit -m "I wrote something".
  • Git is moeilijk te begrijpen omdat er geen conceptuele tutorial is. Ze gaan allemaal door onnodige details.
  • Wilde u de ” terminologie ” -tag uit deze vraag verwijderen? Het lijkt me een volkomen geldige tag.
  • Om de een of andere reden kan ik het belang van enscenering het beste begrijpen door dit antwoord in Quora: qr .ae / TbSK2I

Antwoord

Om een bestand stage is gewoon om het fijn voor te bereiden voor een commit. Git, met zijn index, staat je toe om alleen bepaalde delen van de veranderingen die je hebt gedaan sinds de laatste commit te committen. Stel dat je aan twee features werkt – een is klaar, en een moet nog wat gedaan worden. Je zou graag een commit willen maken en naar huis gaan (5 uur, eindelijk!), Maar je zou de delen van de tweede feature niet willen vastleggen, wat nog niet klaar is. Je ensceneert de delen waarvan je weet dat ze tot de eerste behoren. feature en commit. Nu is je commit je project met de eerste feature gedaan, terwijl de tweede nog in uitvoering is in je werkdirectory.

Reacties

  • Goede uitleg Merk op dat git, die wordt gedistribueerd, je uiteraard toestaat om beide features vast te leggen, aangezien commits lokaal zijn (in het begin). Toch wil je misschien de wijzigingen splitsen in één commit per feature, en opnieuw komt staging goed van pas.
  • Ik don ‘ begrijp niet waarom je hiervoor staging nodig hebt. Ik kan dit doen met HG of zelfs SVN door alleen de relevante bestanden vast te leggen. Het voelt alsof deze functie in de eerste plaats is ontworpen om mensen te helpen die erop staan te werken met de opdrachtregel waar het ‘ is moeilijker o selectievakjes voor wat je aan het doen bent.
  • @jiggy git staat je toe om deel van een bestand te stagen. U kunt ook een bestand stagen, verdere wijzigingen aanbrengen en vervolgens vastleggen in de staat waarin het zich bevond tijdens de staging. Je kunt ‘ dat niet doen in subversion.
  • @jiggy In SVN zit er iets tussen de tijd dat je selecteert welke bestanden / delen van bestanden je wilt vastleggen en wanneer u klaar bent met het schrijven van uw vastleggingsbericht, registreert dat welke bestanden / delen u hebt geselecteerd om vast te leggen. Het wordt misschien nooit expliciet vermeld, het kan worden geïmplementeerd in de SVN-client in plaats van een feitelijk deel van de repository, het kunnen slechts enkele vlaggen in het geheugen zijn, maar dat is SVN ‘ s stadium. Ik heb ‘ niet naar HG gekeken, maar ik vermoed dat het hetzelfde doet. Het verschil met git is dat git erkent dat het een ding is, het op schijf registreert en de gebruiker er rechtstreeks naartoe laat gaan.
  • De tweede pijl ” stage-bestanden ” in de afbeelding kunnen misleidend zijn. ” stage hunks ” is misschien nauwkeuriger?

Antwoord

Aangezien iedereen het tot dusver op de “formele” manier heeft beantwoord, wil ik dit doen met alternatieven om het leren te verbeteren met de kracht van metaforen.

Dus het staging-gebied is als:

  • een cache met bestanden die je wilt vastleggen
  • geen serie van buizen maar eigenlijk een dumptruck, klaar om het werk waarmee je het laadt, naar de opslagplaats te verplaatsen
  • een magische plek waar geselecteerde bestanden met je tovenarij in steen worden veranderd en op magische wijze naar de repository naar eigen wens
  • de gele stenen weg voor de bestanden om met plezier naar de repository te gaan (of eraf te vallen als je terug wilt keren)
  • de fictieve plek in de zeehaven waar bestanden krijgen een paar cementschoenen en worden vervolgens in de opslagzee gegooid
  • de receptiebalie in de bibliotheek, je legt de bestanden daar zodat de bibliothecaris ze kan voorbereiden om ze in de bibliotheek te deponeren
  • een doos waar je dingen in stopt voordat je het onder je bed schuift, waar je bed een opslagplaats is van dozen die je eerder hebt ingeschoven
  • het laadperron van bestanden voordat het naar het opslagmagazijn gaat met de elektrische lader
  • het filter van een elektrisch filterkoffiezetapparaat, als de bestanden als het koffiepoeder zijn, dan zijn de vastgelegde bestanden de gezette koffie
  • het kantoor van Dagobert Duck naast de kluis, de bestanden zijn als de munten voordat ze in de kluis van zijn enorme geldbak gaan.
  • de dierenwinkel, zodra je een huisdier mee naar huis neemt, ben je toegewijd

Het is magisch !

Reacties

  • Ik hou van de analogieën ; goed gedaan bud ^ _ ^
  • Ik ben dol op de laatste analogie.
  • Dit antwoord was ” DESPERATELY ” nodig in de ruimte van gewone pogingen om de metafysica van de git index = git staging uit te leggen. Eerlijk gezegd zou ik ‘ ook graag willen weten wat Linus dacht toen hij besloot dat hij een indexgebied wilde. Ik vind het leuk, maar ik wil gewoon beter begrijpen waarom het ‘ zo goed is om het te hebben en hoe je het het meest effectief kunt gebruiken.

Answer

Staging is een stap vóór het vastlegproces in git. Dat wil zeggen, een commit in git wordt in twee stappen uitgevoerd: staging en daadwerkelijke commit.

Zolang een wijzigingenset zich in het staging-gebied bevindt, staat git je toe deze te bewerken zoals je wilt (vervang staged bestanden door andere versies van gestaged bestanden, verwijder wijzigingen uit staging, enz.).

Tijd gebroken metafoor:

Overweeg een scenario waarbij u de verhuizers belt om uw spullen van uw oude appartement naar uw nieuwe appartement te brengen. Voordat je dat doet, ga je je spullen door, bepaal je wat je meeneemt en wat je weggooit, pak je het in tassen en laat je het achter in de grote gang. De verhuizers komen gewoon, halen de (reeds ingepakte) tassen uit de gang en vervoeren ze. In dit voorbeeld is alles totdat de verhuizers uw spullen pakken, enscenering: u beslist wat waar gaat, hoe u het inpakt, enzovoort (u kunt bijvoorbeeld besluiten dat de helft van uw spullen wordt weggegooid voordat de verhuizers er zelfs maar zijn – dat ” s onderdeel van enscenering).

Vanuit technisch oogpunt ondersteunt staging ook transactionele commits, door alle bewerkingen op te splitsen in wat kan mislukken (staging) en wat niet kan falen (commit):

De commit in git wordt transactioneel geïmplementeerd, nadat de staging succesvol is.Verschillende stappen in de staging kunnen mislukken (je moet bijvoorbeeld committen, maar je harde schijf is 99,9999% vol, en git heeft geen ruimte om voer een commit uit) Dit zal mislukken bij het stagen (je repository zal niet beschadigd raken door een gedeeltelijke commit) en het staging-proces heeft “geen invloed op je commit-geschiedenis (het beschadigt je repository niet in geval van een fout). p>

Reacties

  • … en zo weinig stemmen tot nu toe.

Antwoord

Een bestand stagen is het voorbereiden voor een vastlegging. Omdat git deze actie blootstelt aan de controle van de gebruikers, staat het je toe om gedeeltelijke commits aan te maken, of om een bestand te wijzigen, het te stagen, het opnieuw te wijzigen, en alleen vast te leggen of terug te keren naar de originele aanpassing.

Staging staat je toe fijnere controle over precies hoe u versiebeheer wilt benaderen.

Antwoord

Om toe te voegen aan de andere uitstekende antwoorden, hier “is waar de naam voor” stage “vandaan komt:

Ik heb het woordenboek gecontroleerd op de betekenis van stage en geen van de betekenissen was gerelateerd aan bronbeheerconcepten.

In het Engels kan “to stage” betekenen

organiseren van en deelnemen aan (een openbaar evenement): UDF-supporters een demonstratie georganiseerd in Sofia

(van http://oxforddictionaries.com/definition/stage )

De naam “staging” voor de git-functie is afgeleid van deze betekenis: Tijdens staging bereid je je voor en organiseer je een commit.Natuurlijk is een commit niet helemaal hetzelfde als een performance, maar het is een belangrijke gebeurtenis in een VCS :-).

Reacties

  • Ik ‘ had gedacht dat het beter overeenkwam met het gebruik in staging post
  • Idem. ” ook een punt, periode of stap in een proces of ontwikkeling. ”
  • Ook ‘ staging-server ‘ is een vrij algemene term die wordt gebruikt om een server te beschrijven die ‘ s tussen ontwikkeling en productie.

Answer

De “stage” is een technisch vereiste tussenstap in het proces van het inchecken van een bestand, namelijk het verzamelen van de wijzigingen die aan de repository moeten worden toegevoegd. De auteurs van Git kozen ervoor om deze stap zichtbaar en persistent te maken waar andere VCS het een tijdelijk onderdeel van het vastlegproces maken. Dus het is gewoon een optie die git je geeft omdat het kan, dus waarom niet?

Zoals ik het zie, is het belangrijkste dat de git “stage” je geeft dat andere VCS niet is dat je het kunt gebruiken om een bestand te checken. Het is in feite een naamloze, niet-becommentarieerde lokale commit die je een tussenstap geeft tussen gedaan worden met al je werk en het permanent in de repository vastleggen en helemaal niets opslaan in je lokale repo.

Laten we bijvoorbeeld zeggen dat een feature gedeeltelijk af is. Het is in een stabiele staat, slaagt voor alle tests en zou in productie kunnen gaan, maar je hebt er meer werk aan te doen. Je zou al je wijzigingen kunnen stagen en dan verder kunnen werken aan de functie.

Later heb je de optie om gewoon vast te leggen wat je hebt gestaged (en die commit naar de externe repository te pushen) of om je nieuwe wijzigingen aan uw staging-gebied en vervolgens alles in één keer vastleggen, of om alleen uw nieuwe wijzigingen ongedaan te maken en uw werkdirectory terug te zetten naar de staat waarin deze zich bevond toen u uw wijzigingen staged.

Het is volledig mogelijk om het verzamelgebied praktisch helemaal over te slaan en gebruik gewoon de optie -a voor git commit als je het verzamelgebied geen nuttig concept vindt. Veel mensen slaan staging over en GUI-tools staan dit meestal ook toe.

Reacties

  • ” andere VCS don ‘ t ” – waarom denk je dat? Shelving bij Perforce lijkt te doen wat je beschrijft, en zelfs met een paar extra toeters en bellen
  • @gnat ja, natuurlijk veel andere VCS geven je zoiets als enscenering. Met ” andere VCS ” bedoel ik andere VCS die niet ‘ zoiets als git hebben ‘ s stadium, aangezien dat is waar het OP naar verwees.
  • Ik vond dit antwoord enorm beter dan al het bovenstaande, aangezien het ‘ is de enige die duidelijk maakt waarom Staging überhaupt bestaat (zijnde technisch vereist ), een verklaring van de oorsprong ( Git ‘ s auteurs kozen ervoor om deze stap zichtbaar en persistent te maken ), door toe te voegen wat ik persoonlijk een goede definitie vind ( een tussenliggende, naamloze, lokale commit zonder commentaar ) . Ik denk echter dat het verbeterd kan worden door een bron te citeren voor de verklaring over de oorsprong van Staging, en wat meer uit te leggen waarom het ‘ s technisch vereist . @OldPro
  • Werd git helemaal opnieuw ontworpen, dit had gewoon deel kunnen uitmaken van een gegeneraliseerde ” branch ” concept, lokaal en ongezien door anderen in dit geval. Evenzo had ” stash ” zojuist geïmplementeerd (en begrepen!) Kunnen zijn als een specifieke instantie van het gegeneraliseerde concept van ” branch. ” Je zou dan een willekeurig aantal niveaus kunnen hebben van ” staging ” uw voorkeur.

Antwoord

Bij de meeste andere versiebeheersystemen zijn er 2 plaatsen om gegevens opslaan: uw werkkopie (de mappen / bestanden die u momenteel gebruikt) en de datastore (waar het versiebeheer beslist hoe u uw wijzigingen inpakt en opslaat). In Git is er een derde optie: het staging-gebied (of index). Het is eigenlijk een laadperron waar u kunt bepalen welke wijzigingen worden weggestuurd.

source: http://gitready.com/beginner/2009/01/18/the-staging-area.html

Reacties

  • dit lijkt ‘ t niets substantieel toe te voegen aan de voorgaande 6 antwoorden.
  • Het vermeldt Index. En verwijzingen naar een zeer gedegen artikel. Upvoting. Trouwens, sommige antwoorden hierboven zijn slechts grappen.

Antwoord

Ik heb het begrepen, stel dat ik een aanmeldingsfunctie aan het ontwikkelen ben en dat ik 5 opeenvolgende stappen nodig heb om te voltooien. Dus hier zal enscenering je helpen om te werken aan stappen zoals
klaar met stap 1, zet het op.
klaar met stap 2, nu zijn stap 1 en stap 2 beide correct.
verprutst stap 3 nee probleem uitchecken laatste gefaseerde stap dat is stap 2
dezelfde manier als je eenmaal klaar bent met alle 5 stappen, dat betekent dat de functie voltooid is, voer nu een vastlegging uit.

Opmerkingen

  • dit lijkt niet ‘ iets substantieel toe te voegen aan de punten die zijn gemaakt en uitgelegd in eerdere 9 antwoorden
  • ja je hebt gelijk, ik heb net geprobeerd de uitleg eenvoudig en lief te maken
  • En hoe ik dit concept praktisch wil gebruiken, ik heb geprobeerd dat uit te leggen
  • overweeg om de discussie hier te bekijken: Zijn tweede TL; DR-antwoorden acceptabel? (FWIW vergeleken met eerdere antwoorden doet deze niet ‘ ziet er niet eenvoudig noch lief uit)
  • dank u meneer, ik heb een vraag te stellen. Ik ben veel antwoorden tegengekomen en de meeste zijn te complex. Ja, die zijn correct, maar moeilijk in één keer te verteren, ik geloof dat als je ‘ niets op een eenvoudige manier kunt uitleggen, dan jij heb het niet goed geleerd of ‘ weet niet hoe het te gebruiken. Dus is het nu slecht om een samenvatting of een eenvoudige manier van antwoorden te geven ??

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *