Git jest trudny do zrozumienia, ponieważ nie mogłem znaleźć znaczenia słów użytych w czynnościach. Sprawdziłem w słowniku znaczenie słowa „etap” i żadne ze znaczeń nie było związane z koncepcjami kontroli źródła.
Co oznacza „etap” w kontekście git?
Komentarze
Odpowiedź
Aby wystawić plik to po prostu dokładne przygotowanie go do zatwierdzenia. Git, ze swoim indeksem, pozwala na zatwierdzenie tylko niektórych części zmian, które zrobiłeś od ostatniego zatwierdzenia. Powiedzmy, że pracujesz nad dwiema funkcjami – jedna jest skończona, a druga nadal wymaga trochę pracy. Chciałbyś zatwierdzić i wrócić do domu (w końcu o 17:00!), Ale nie chciałbyś zatwierdzić części drugiej funkcji, co jeszcze nie zostało zrobione. Przygotowujesz części, o których wiesz, że należą do pierwszej funkcja i zatwierdzenie. Teraz zatwierdzenie jest projektem z ukończoną pierwszą funkcją, podczas gdy druga jest nadal w toku w katalogu roboczym.
Komentarze
- Dobre wyjaśnienie. Zauważ, że dystrybucja git pozwala oczywiście na zatwierdzenie obu funkcji, ponieważ zatwierdzenia są lokalne (na początku). Mimo to możesz chcieć podzielić modyfikacje na jedno zatwierdzenie na funkcję i ponownie przemieszczanie jest przydatne.
- Nie ' nie rozumiem, dlaczego potrzebujesz do tego przemieszczania. Mogę to zrobić z HG lub nawet SVN, tylko zatwierdzając odpowiednie pliki. Wydaje się, że ta funkcja jest przeznaczona głównie do pomocy ludziom, którzy nalegają na pracę z wierszem poleceń, w którym to ' s trudniej o zaznacz pola wyboru tego, co zatwierdzasz.
- @jiggy git pozwala na przygotowanie części pliku. Możesz również przygotować plik, wprowadzić dalsze modyfikacje, a następnie zatwierdzić stan, w jakim był podczas przemieszczania. Możesz ' zrobić to w subversion.
- @jiggy W SVN jest coś między czasem, który wybierasz, które pliki / części plików do zatwierdzenia a kiedy skończysz pisać swoją wiadomość o zatwierdzeniu, zapisuje, które pliki / części wybrałeś do zatwierdzenia. Być może nigdy nie zostanie to wyraźnie wymienione, może być zaimplementowane w kliencie SVN, a nie w rzeczywistej części repozytorium, może to być po prostu kilka flag w pamięci, ale to jest SVN ' s etap. Nie ' nie patrzyłem na HG, ale podejrzewam, że robi to samo. Różnica w stosunku do git polega na tym, że git uznaje, że coś jest rzeczą, zapisuje ją na dysku i pozwala użytkownikowi uzyskać do niej bezpośredni dostęp.
- Druga strzałka ” Pliki sceniczne ” na rysunku mogą wprowadzać w błąd. ” fragmenty sceny ” mogą być dokładniejsze?
Odpowiedź
Ponieważ wszyscy do tej pory odpowiadali na to w sposób „formalny”, pozwólcie, że zrobię to z alternatywami, aby wzbogacić naukę o moc metafor.
Więc obszar przejściowy jest taki:
- pamięć podręczna plików, które chcesz zatwierdzić
- a nie seria rur, ale w rzeczywistości wywrotka, gotowa do przeniesienia pracy, którą ją załadujesz, do repozytorium
- magiczne miejsce, w którym wybrane pliki zostaną zamienione w kamień za pomocą twojej magii i mogą być magicznie przetransportowane do repozytorium według własnego uznania
- żółta ceglana droga, przez którą pliki szczęśliwie trafiają do repozytorium (lub spadają, jeśli chcesz przywrócić)
- fikcyjne miejsce w porcie morskim, gdzie pliki otrzymujesz parę cementowych butów, a następnie wrzucasz do morza repozytorium
- biurko recepcyjne w bibliotece, umieszczasz tam pliki, aby bibliotekarz przygotował się do przechowywania w bibliotece
- pudełko, w którym umieszczasz rzeczy przed włożeniem ich pod łóżko, gdzie twoje łóżko jest repozytorium pudeł, które wcześniej włożyłeś
- ładowanie plików, zanim trafią one do magazynu repozytorium z ładowarka
- filtr elektrycznego ekspresu przelewowego, jeśli pliki są jak kawa mielona, to zatwierdzone pliki to kawa parzona
- biuro Scrooge McDuck obok skarbca, pliki są jak monety, zanim trafią do skarbca jego ogromnego kosza na pieniądze
- sklepu zoologicznego, kiedy przyniesiesz zwierzaka do domu, zostajesz zmuszony
To jest magiczne !
Komentarze
- Uwielbiam analogie ; sposób na to, bud ^ _ ^
- Uwielbiam ostatnią analogię.
- Ta odpowiedź brzmiała ” DESPERATELNIE ” potrzebne w przestrzeni wspólnych prób wyjaśnienia metafizyki indeksu git = inscenizacja git. Szczerze mówiąc, ' chciałbym też wiedzieć, o czym myślał Linus, gdy zdecydował, że chce mieć obszar indeksu. Podoba mi się, ale po prostu chcę lepiej docenić, dlaczego ' dobrze go mieć i jak z niego korzystać najefektywniej.
Odpowiedź
Staging to krok przed zatwierdzeniem w git. Oznacza to, że zatwierdzenie w git jest wykonywane w dwóch krokach: przemieszczanie i rzeczywiste zatwierdzanie.
Dopóki zestaw zmian znajduje się w obszarze przejściowym, git pozwala edytować go tak, jak chcesz (zamień pliki przemieszczane na inne wersje plików przejściowych, usuwanie zmian z przemieszczania itp.).
Uszkodzony czas metafory:
Rozważ scenariusz, w którym dzwonisz do osób przeprowadzających się, aby zabrać swoje rzeczy ze starego mieszkania do nowego. Zanim to zrobisz, przejrzysz swoje rzeczy, zdecydujesz, co ze sobą zabierzesz, a co wyrzucisz, zapakujesz w torby i zostawisz w głównym korytarzu. Przeprowadzki po prostu przychodzą, biorą (już spakowane) torby z korytarza i transportują. W tym przykładzie wszystko do momentu, w którym osoby przeprowadzające przewóz dostaną Twoje rzeczy, jest inscenizacją: Ty decydujesz, co gdzie jest, jak to spakować itd. (Np. Możesz zdecydować, że połowa Twoich rzeczy zostanie wyrzucona, zanim osoby przenoszące się tam dostaną – to) s częścią przemieszczania).
Z technicznego punktu widzenia przemieszczanie obsługuje również zatwierdzanie transakcyjne, dzieląc wszystkie operacje na to, co może się nie powieść (przemieszczanie), a co nie może zawieść (zatwierdzenie):
Zatwierdzenie w git jest realizowane transakcyjnie, po pomyślnym przemieszczeniu. Kilka kroków w przemieszczaniu może się nie powieść (na przykład musisz zatwierdzić, ale twój dysk twardy jest zapełniony w 99,9999%, a git nie ma miejsca na wykonać zatwierdzenie). Spowoduje to niepowodzenie podczas przemieszczania (repozytorium nie zostanie uszkodzone przez częściowe zatwierdzenie), a proces przemieszczania nie wpływa na historię zatwierdzania (nie uszkadza repozytorium w przypadku błędu).
Komentarze
- … i jak dotąd tak mało głosów.
Odpowiedź
Przygotowanie pliku na scenę oznacza przygotowanie go do zatwierdzenia. Ponieważ git udostępnia tę akcję kontroli użytkowników, pozwala na tworzenie częściowych zatwierdzeń lub modyfikowanie pliku, przygotowywanie go, modyfikowanie ponownie i tylko zatwierdzanie lub przywracanie oryginalnej modyfikacji.
Staging umożliwia dokładniejsza kontrola nad tym, jak chcesz podejść do kontroli wersji.
Odpowiedź
Aby dodać do innych doskonałych odpowiedzi, oto skąd pochodzi nazwa „etapu”:
Sprawdziłem w słowniku znaczenie etapu i żadne ze znaczeń nie było związane z koncepcjami kontroli źródła.
W języku angielskim „to stage” może oznaczać
zorganizować i uczestniczyć w (publicznym wydarzeniu): zwolennicy UDF zorganizował demonstrację w Sofii
(from http://oxforddictionaries.com/definition/stage )
Nazwa „staging” dla funkcji git wywodzi się z tego znaczenia: Podczas tworzenia scen przygotowujesz i organizujesz zatwierdzenie.Oczywiście zatwierdzenie to nie to samo co wykonanie, ale jest ważnym wydarzeniem w VCS :-).
Komentarze
- Ja ' d pomyślałem, że bardziej pasuje do użycia w poście testowym
- Jak wyżej. Ponadto ” punkt, okres lub krok w procesie lub rozwoju. ”
- Również ' serwer pomostowy ' to dość powszechny termin używany do opisania serwera, który ' znajduje się między programowaniem a produkcji.
Odpowiedź
„Etap” jest technicznie wymaganym etapem pośrednim w procesie sprawdzania plik, czyli zbieranie zmian do dodania do repozytorium. Autorzy Gita zdecydowali się uczynić ten krok widocznym i trwałym, podczas gdy inne VCS czynią go przejściową częścią procesu zatwierdzania. Jest to więc tylko opcja, którą daje git, ponieważ może, więc dlaczego nie?
Z mojego punktu widzenia najważniejszą rzeczą, jaką git „stage” daje ci, czego nie mają inne VCS, jest to, że możesz go użyć do kontrolowania pliku. Jest to efektywnie nienazwany, niekomentowany lokalny zatwierdzenie, które daje ci pośredni krok między wykonując całą swoją pracę i przekazując ją na stałe do repozytorium oraz nie mając nic zapisanego w lokalnym repozytorium.
Na przykład, powiedzmy, że masz częściowo ukończoną funkcję. Jest w stabilnym stanie, przeszła wszystkie testy i mogłaby przejść do produkcji, ale masz więcej do zrobienia. Możesz zaimplementować wszystkie swoje zmiany, a następnie kontynuować pracę nad tą funkcją.
Później będziesz mieć możliwość po prostu zatwierdzania tego, co wystawiłeś (i wypchnij to zatwierdzenie do zdalnego repozytorium) lub dodania nowe zmiany w twoim obszarze przemieszczania, a następnie zatwierdź je wszystkie naraz lub cofnij tylko nowe zmiany i przywróć katalog roboczy do stanu, w którym był, gdy wprowadzałeś zmiany.
Jest to całkowicie możliwe aby praktycznie całkowicie pominąć strefę przejściową i po prostu użyć opcji -a
do git commit
, jeśli nie uważasz, że ta strefa jest pomocna. Wiele osób pomija staging, a narzędzia GUI też na to pozwalają.
Komentarze
- ” inne VCS don ' t ” – co tak uważasz? Regały w Perforce wydają się działać co opisujesz, a nawet z kilkoma dodatkowymi dzwonkami i gwizdkami
- @gnat tak, oczywiście wiele innych VCS daje ci coś w rodzaju inscenizacji. Przez ” inne VCS ” mam na myśli inne VCS, które nie ' nie mają czegoś takiego jak git ', ponieważ do tego właśnie odnosi się PO.
- Uważam, że ta odpowiedź jest znacznie lepsza niż wszystkie powyższe, ponieważ ' jest jedynym, który wyjaśnia, dlaczego w ogóle istnieje Staging (jest technicznie wymagane ), wyjaśnienie jego pochodzenia ( Git ' zdecydowali się uczynić ten krok widocznym i trwałym ), dodając to, co osobiście uważam za dobrą jego definicję ( pośrednie, nienazwane, lokalne zatwierdzenie bez komentarzy ) . Myślę jednak, że można by to poprawić, przytaczając źródło stwierdzenia o pochodzeniu inscenizacji i wyjaśniając, dlaczego jest ' technicznie wymagane . @OldPro
- Gdyby git był projektowany od podstaw, mógł to być po prostu część uogólnionej ” gałęzi ” koncepcja, lokalna i niewidoczna dla innych w tym przypadku. Podobnie ” stash ” mógł zostać po prostu zaimplementowany (i zrozumiany!) Jako konkretny przykład uogólnionej koncepcji ” branch. ” Możesz wtedy mieć dowolną liczbę poziomów ” staging ” wolisz.
Odpowiedź
W przypadku większości innych systemów kontroli wersji są 2 miejsca na przechowuj dane: twoją kopię roboczą (foldery / pliki, których aktualnie używasz) i magazyn danych (gdzie kontrola wersji decyduje, jak spakować i przechowywać twoje zmiany). W Gicie jest trzecia opcja: obszar przejściowy (lub indeks). Jest to w zasadzie stacja ładująca, w której można określić, jakie zmiany zostaną wysłane.
źródło: http://gitready.com/beginner/2009/01/18/the-staging-area.html
Komentarze
- to nie ' nie wydaje się dodawać nic istotnego do poprzednich 6 odpowiedzi
- Wspomina o indeksie. I odniesienia do bardzo dokładnego artykułu. Głosowanie za. Przy okazji, niektóre powyższe odpowiedzi to tylko żarty.
Odpowiedź
Rozumiem, że pracuję nad funkcją logowania i potrzebuję 5 kolejnych kroków do wykonania. Więc tutaj inscenizacja pomoże ci pracować nad krokami takimi jak
, wykonanymi z krokiem 1, wykonuj to.
zrobione z krokiem 2, teraz krok 1 i krok 2 oba są poprawne.
pomieszaj z krokiem 3 nie problem sprawdź ostatni etap etapowy, czyli krok 2
w ten sam sposób po wykonaniu wszystkich 5 kroków, co oznacza, że funkcja jest zakończona, teraz wykonaj zatwierdzenie.
Komentarze
- to nie ' nie wydaje się dodawać nic istotnego do uwag poczynionych i wyjaśnionych w poprzednich 9 odpowiedzi
- tak, masz rację, po prostu starałem się, aby wyjaśnienie było proste i słodkie
- I co czuję, używając tej koncepcji w praktyce, próbowałem to wyjaśnić
- rozważ przyjrzenie się dyskusji tutaj: Czy druga odpowiedź TL; DR jest akceptowalna? (FWIW w porównaniu z poprzednimi odpowiedziami nie ' nie wygląda to prosto ani słodko)
- dziękuję panu, mam pytanie do zadania. Natknąłem się na wiele odpowiedzi i większość z nich jest zbyt skomplikowanych. Tak, są one poprawne, ale od razu trudne do zrozumienia. Wierzę, że jeśli możesz ' nie wyjaśnić niczego w prosty sposób, nie nauczyłem się go prawidłowo lub nie ' nie wiem, jak go używać. Czy jest więc źle teraz umieszczać podsumowanie lub prosty sposób odpowiedzi ??
git add file.ext
dla określonego pliku lubgit add .
, aby wpłynąć na wszystkie zmodyfikowane i nieśledzone pliki. Pliki dodane w ten sposób są nazywane ” staged ” i zostaną uwzględnione w następnym ” zatwierdzić „. Zatwierdzenie to migawka Twojej pracy utworzonej np. zgit commit -m "I wrote something"
.