Mi se pare greu de înțeles, deoarece nu am putut găsi sensul cuvintelor folosite pentru acțiuni. Am verificat în dicționar semnificația „etapei” și niciuna dintre semnificații nu a fost legată de conceptele de control sursă.
Ce înseamnă „etapă” în contextul git?
Comentarii
Răspuns
Pentru a pune un fișier este pur și simplu să-l pregătiți fin pentru o comitere. Git, cu indexul său, vă permite să comiteți doar anumite părți din modificările pe care le-ați făcut de la ultima comitere. Spuneți că lucrați la două caracteristici – una este terminată și una are încă nevoie de ceva lucru. Ți-ar plăcea să faci un commit și să mergi acasă (ceasul la 5 „, în sfârșit!), Dar nu ți-ar plăcea să comiți părțile celei de-a doua caracteristici, care nu este încă realizată. Pune în scenă părțile pe care le știi că aparțin primei caracteristică și commit. Acum commit-ul este proiectul dvs. cu prima caracteristică realizată, în timp ce a doua este încă în lucru în directorul dvs. de lucru.
Comentarii
- Explicație bună. Rețineți că git, fiind distribuit, vă permite în mod evident să comiteți ambele caracteristici , deoarece validările sunt locale (la început). Totuși, poate doriți să puneți modificările împărțite într-o singură validare pentru fiecare caracteristică, iar punerea în scenă este utilă.
- Nu ‘ nu înțeleg de ce aveți nevoie de organizare pentru acest lucru. Pot face acest lucru cu HG sau chiar cu SVN prin comiterea doar a fișierelor relevante. Se pare că această caracteristică este concepută în primul rând pentru a ajuta persoanele care insistă să lucreze cu linia de comandă acolo unde este ‘ e mai greu t o bifați casetele pentru ceea ce comiteți.
- @jiggy git vă permite să puneți în scenă partea dintr-un fișier. Puteți, de asemenea, să organizați un fișier, să faceți modificări ulterioare, apoi să comiteți starea în care se afla la etapă. Nu poți ‘ să faci asta în subversiune.
- @jiggy În SVN, există ceva, între momentul în care selectezi ce fișiere / părți de fișiere să angajezi iar când ați terminat de scris mesajul de confirmare, acesta înregistrează ce fișiere / părți ați selectat pentru a comite. S-ar putea să nu fie niciodată menționat explicit, ar putea fi implementat în clientul SVN mai degrabă decât o parte reală a depozitului, ar putea fi doar niște semnalizatoare în memorie, dar acesta este SVN ‘ s etapă. ‘ nu m-am uitat la HG, dar bănuiesc că face același lucru. Diferența cu git este că git recunoaște că este un lucru, îl înregistrează pe disc și permite utilizatorului să ajungă direct la el.
- A doua săgeată ” fișierele de etapă ” din figură pot fi înșelătoare. ” bătăile etapei ” ar putea fi mai precise?
Răspuns
Deoarece toată lumea a răspuns până acum la modul „formal”, permiteți-mi să fac asta cu alternative pentru a îmbunătăți învățarea cu puterea metaforei.
Deci, zona intermediară este ca:
- o memorie cache de fișiere pe care doriți să le comiteți
- nu o serie de tuburi, dar de fapt un autobasculant, gata să mute lucrarea cu care o încărcați, în depozit
- un loc magic unde fișierele selectate vor fi transformate în piatră cu vrăjitoria dvs. și pot fi transportate magic la depozit după bunul plac
- drumul de cărămidă galbenă pentru ca fișierele să meargă fericit la depozit (sau să cadă dacă doriți să reveniți)
- locul fictiv din portul maritim unde fișierele primesc o pereche de pantofi de ciment și apoi aruncați în marea depozitului
- biroul de recepții de la bibliotecă, puneți fișierele acolo pentru ca bibliotecarul să se pregătească pentru înregistrarea în bibliotecă
- o cutie în care puneți lucrurile înainte de a o împinge sub pat, unde patul dvs. este un depozit de cutii pe care le-ați introdus anterior în
- compartimentul de încărcare a fișierelor înainte de a intra în depozitul depozitului cu încărcător de putere
- filtrul unui aparat de cafea electric cu picurare, dacă fișierele sunt ca praful de cafea, atunci fișierele angajate sunt cafeaua preparată
- biroul Scrooge McDuck de lângă seif, fișierele sunt ca monedele înainte de a intra în seiful masivei sale Coșuri de bani
- magazinul pentru animale de companie, după ce aduceți un animal de companie acasă, sunteți angajat
Este magic !
Comentarii
- Iubesc analogiile ; way to go bud ^ _ ^
- Iubesc analogia finală.
- Acest răspuns a fost ” DESPERAT ” necesar între spațiul încercărilor comune de a explica metafizica indexului git = git staging. Sincer, mi-ar plăcea, de asemenea, ‘ să știu la ce se gândea Linus când a decis că vrea o zonă indexată. Îmi place, dar pur și simplu vreau să apreciez mai bine de ce ‘ este bine să îl ai și cum să-l folosești cel mai eficient.
Răspuns
Stagierea este un pas înainte de procesul de validare în git. Adică, un commit în git se efectuează în doi pași: staging și commit real.
Atâta timp cât un set de modificări se află în zona de stocare, git vă permite să îl editați după cum doriți (înlocuiți fișierele etapizate cu alte versiuni ale fișierelor etapizate, eliminați modificările din etapizare etc.).
Timp de metaforă întreruptă:
Luați în considerare un scenariu în care îi apelați pe cei care se mută pentru a vă transporta lucrurile din vechiul dvs. apartament în noul dvs. apartament. Înainte de a face asta, veți trece prin lucrurile voastre, veți decide ce luați cu voi și ce aruncați, le veți împacheta în saci și le veți lăsa pe holul principal. Mutatorii pur și simplu vin, iau sacii (deja ambalați) de pe hol și le transportă. În acest exemplu, totul până când mutatorii îți primesc lucrurile este în scenă: tu decizi ce merge unde, cum să-l împachetezi și așa mai departe (de exemplu, poți decide că jumătate din lucrurile tale vor fi aruncate înainte ca și mutatorii să ajungă acolo – că ” parte a etapizării).
Din punct de vedere tehnic, etapizarea acceptă și comitetele tranzacționale, împărțind toate operațiunile în ceea ce poate eșua (etapizare) și ceea ce nu poate eșua (commit):
Confirmarea în git este implementată tranzacțional, după finalizarea succesului. Mai mulți pași în desfășurare pot eșua (de exemplu, trebuie să comiteți, dar HDD-ul dvs. este 99,9999% plin, iar git nu are spațiu pentru Efectuați un commit). Acest lucru va eșua în etapă (depozitul dvs. nu va fi corupt de un commit parțial), iar procesul de stagiere nu vă afectează istoricul de commit (nu vă corupe depozitul în caz de eroare).
Comentarii
- … și atât de puține voturi până acum.
Răspuns
A aranja un fișier înseamnă a-l pregăti pentru un commit. Deoarece git expune această acțiune controlului utilizatorilor, vă permite să creați confirmări parțiale sau să modificați un fișier, să-l aranjați, să-l modificați din nou și să comiteți sau să reveniți la modificarea originală.
Stagierea vă permite un control mai fin asupra exact cum vrei să abordezi controlul versiunii.
Răspuns
Pentru a adăuga la celelalte răspunsuri excelente, iată de unde provine numele pentru „etapă”:
Am verificat în dicționar semnificația etapei și niciuna dintre semnificații nu a fost legată de conceptele de control sursă.
În engleză, „a pune în scenă” poate însemna
organizează și participă (un eveniment public): suporteri UDF a organizat o demonstrație la Sofia
(din http://oxforddictionaries.com/definition/stage )
Numele „etapizare” pentru caracteristica git derivă din acest sens: Atunci când organizați, pregătiți și organizați un commit.Desigur, un commit nu este la fel ca o performanță, dar este un eveniment important într-un VCS :-).
Comentarii
- Am ‘ am crezut că se potrivește mai bine cu utilizarea în postare de difuzare
- Idem. De asemenea, ” un punct, o perioadă sau un pas dintr-un proces sau dezvoltare. ”
- De asemenea, ‘ server de stocare ‘ este un termen destul de comun folosit pentru a descrie un server care ‘ se află între dezvoltare și producție.
Răspuns
„Etapa” este un pas intermediar tehnic necesar în procesul de verificare a unui fișier, și anume colectarea modificărilor care trebuie adăugate la depozit. Autorii lui Git au ales să facă acest pas vizibil și persistent acolo unde alte VCS îl fac o parte tranzitorie a procesului de validare. Deci, este doar o opțiune pe care vi-o oferă git, deoarece poate, de ce nu?
Modul în care îl văd, principalul lucru pe care „etapa” git vă oferă că alte VCS nu este că îl puteți utiliza pentru a verifica un fișier. Este efectiv un commit local fără nume, necomentat, care vă oferă un pas intermediar între realizându-vă cu toată munca dvs. și angajând-o în depozit definitiv și fără a avea nimic salvat în repo-ul local.
De exemplu, să spunem că aveți o caracteristică parțial terminată. Se află într-o stare stabilă, trece toate testele și ar putea intra în producție, dar aveți mai mult de lucru la ea. Puteți pune în scenă toate modificările dvs. și apoi continuați să lucrați la caracteristică.
Mai târziu, veți avea opțiunea să comiteți doar ceea ce ați organizat (și să împingeți comitetul în depozitul la distanță) sau să modificări noi în zona dvs. de plasare și apoi să o comiteți dintr-o dată, sau să anulați doar modificările noi și să reveniți la directorul de lucru în starea în care erați când ați organizat modificările.
Este complet posibil pentru a sări practic zona de etapă cu totul și pur și simplu folosiți opțiunea -a
pentru a git commit
dacă nu găsiți zona de etapă un concept util. O mulțime de oameni trec peste etapă și instrumentele GUI permit, de obicei, și acest lucru.
Comentarii
- ” other VCS don ‘ t ” – ce te face să crezi așa? Rafturile la Perforce par să facă ceea ce descrieți și chiar cu câteva clopote și fluiere suplimentare
- @gnat da, desigur multe alte VCS vă oferă ceva de genul punerii în scenă. Prin ” alte VCS ” mă refer la alte VCS care nu au ‘ t au ceva de genul git ‘ etapă, deoarece la asta se referea OP.
- Am găsit acest răspuns mult mai bun decât toate cele de mai sus, deoarece ‘ este singurul care clarifică de ce există deloc Staging (fiind necesar din punct de vedere tehnic ), o explicație a originii sale ( Git ‘ autorii au ales să facă acest pas vizibil și persistent ), adăugând ceea ce personal consider că este o definiție bună pentru acesta ( un commit local intermediar, fără nume, necomentat ) . Cu toate acestea, cred că ar putea fi îmbunătățit citând o sursă pentru afirmația despre originea etapizării și să mai detaliez câteva de ce ‘ este necesar din punct de vedere tehnic . @OldPro
- Dacă git a fost conceput de la zero, acest lucru ar fi putut face parte dintr-o ramură generalizată ” ” concept, local și nevăzut de alții în acest caz. De asemenea, ” stash ” ar fi putut fi implementat (și înțeles!) Ca o instanță specifică a conceptului generalizat de ” ramură. ” Puteți avea apoi orice număr de niveluri de ” etapizare ” preferați.
Răspuns
Cu majoritatea celorlalte sisteme de control al versiunilor, există 2 locuri pentru stochează date: copia ta de lucru (folderele / fișierele pe care le folosești în prezent) și depozitul de date (unde controlul versiunii decide cum să împachetezi și să stochezi modificările). În Git există o a treia opțiune: zona intermediară (sau indexul). Este practic un doc de încărcare în care puteți determina ce modificări sunt expediate.
sursă: http://gitready.com/beginner/2009/01/18/the-staging-area.html
Comentarii
- acest lucru nu ‘ pare să adauge nimic substanțial față de cele 6 răspunsuri anterioare
- Menționează Index. Și referințe la un articol foarte amănunțit. Votarea pozitivă. BTW, unele răspunsuri de mai sus sunt doar glume.
Răspuns
Înțeleg că presupun că dezvolt funcția de conectare și am nevoie de 5 pași consecutivi pentru a finaliza. Așadar, înscenarea în scenă vă va ajuta să lucrați la pași cum ar fi
finalizați cu pasul 1 puneți-l în scenă.
realizat cu pasul 2, acum pasul 1 și pasul 2 sunt corect etapizați-l.
dezordinați cu pasul 3 nu Ultima etapă de verificare a problemei, care este pasul 2
același mod, odată ce ați terminat cu toți cei 5 pași, înseamnă că caracteristica este completă.
Comentarii
- acest lucru nu ‘ nu pare să adauge nimic substanțial asupra punctelor făcute și explicate anterior 9 răspunsuri
- da ai dreptate, tocmai am încercat să fac explicația simplă și plăcută
- Și ce simt să folosesc acest concept practic am încercat să explic că
- luați în considerare o discuție aici: Sunt acceptate al doilea răspuns TL; DR? (FWIW în comparație cu răspunsurile anterioare acesta nu ‘ nu mi se pare simplu și nici dulce)
- mulțumesc domnule, am o întrebare de pus. Am întâlnit multe răspunsuri și cele mai multe dintre ele sunt prea complexe, da, sunt corecte, dar greu de digerat simultan, cred că dacă nu poți ‘ să explici ceva într-un mod simplu, atunci tu nu l-ați învățat corect sau nu ‘ nu știți cum să îl utilizați. Deci, este rău acum să puneți un rezumat sau un mod simplu de a răspunde ??
git add file.ext
pentru un anumit fișier saugit add .
pentru a afecta toate fișierele modificate și nesurse. Se spune că fișierele care au fost adăugate în acest mod sunt ” organizate ” și vor fi incluse în următorul ” commit „. Confirmarea este un instantaneu al muncii create, de ex. cugit commit -m "I wrote something"
.