2013-03-05 9 views
5

Na diagramie pokazanym na stronie git-scm, Recording Changes to a Repository, pokazuje, że po dodaniu pliku untracked przechodzi do stanu unmodified.Po dodaniu niepotkanego pliku, czy nie zostanie natychmiast rozpoczęty?

enter image description here

Czy jest to prawidłowe? Jeśli uruchomię $ git add myFile, a następnie $ git status, to pokaże, że myFile jest gotowy do zatwierdzenia, co (z perspektywy mojego początkującego) wygląda nieintuicyjnie, patrząc na diagram na tej stronie.

Czy diagram jest niepoprawny, niekompletny lub czy moje rozumienie schematu jest nieprawidłowe? Jeśli to drugie, proszę, niech ktoś wytłumaczy, co to znaczy.

Odpowiedz

4

Po otrzymaniu nowego nieodtworzonego pliku zostanie on natychmiast wystawiony (niebieska scena na obrazku). Diagram jest mylący w tym względzie, ale tekst na tej stronie mówi tyle samo w paragrafie Tracking New Files.

+0

Schemat jest zapewne zwodniczy; strzałka "dodaj plik" powinna zostać przeniesiona z "untracked" do "stage". AFAIK, jeśli "zgubisz plik rm", to plik zostanie usunięty z katalogu i oznaczony jako usunięty w obszarze przemieszczania; to nie jest po prostu nieśledzone. –

+1

Myślę, że strzałka "dodaj plik" nie oznacza bezpośrednio 'git add'. Wydaje mi się, że próbuję pokazać, jak plik jest przenoszony z jednego stanu do drugiego ... W każdym razie nie jest to wystarczająco jasne. – iberbeu

+0

Dziękuję wszystkim, uczę wprowadzenia do reszty mojego laboratorium, ale jako początkujący, Staram się uważać, aby niczego nie uczyć, nie jestem pewien siebie. – ataulm

3

graficzny jest mylące, ponieważ nie wyraźnie wywołać różnicę między pliku i wersji z tego samego pliku.

Kiedy git add plik, dodajesz aktualną wersję go w katalogu roboczym do Staging Area. Obecna wersja jest teraz uważana za zainscenizowaną i jest gotowa do zatwierdzenia. Ponieważ zawartość pliku katalogu roboczego jest taka sama jak w wersji etapowej, plik jest uznawany za niezmodyfikowany. Jeśli miałbyś zatwierdzić w tym momencie, wersja, która zostanie sprawdzona w repozytorium, jest wersją etapową, która również pasuje do tego, jak plik wygląda w twoim katalogu roboczym.

Przypuśćmy jednak, że zamiast zatwierdzać natychmiast po dodaniu pliku, należy wprowadzić dodatkowe zmiany w pliku w katalogu roboczym. Teraz faktycznie niby-of mają dwóch wersjach pliku: etapowej wersję z wcześniej, a teraz Modified wersji w katalogu roboczym. Jeśli miałbyś popełnić przy tej chwili, zostanie pobrana wcześniejsza wersja etapowa, która jest inna niż w twoim katalogu roboczym.

3

Odpowiedź na to pytanie brzmi: tak. Po przejściu nieskrytego pliku jest on wystawiany, a nie niezmodyfikowany.

Dla mnie najtrudniejszy problem z tym schematem, było to, że nie ma sensu plików klasyfikować jako:

  • untracked
  • niemodyfikowana
  • zmodyfikowany
  • wystawił

Właściwe kategorie, moim zdaniem, to:

  • untracked
  • niemodyfikowana
  • Unstaged
  • wystawił

correct categories for state of the file

Ważnymi przymiotniki są oznaczone kolorem różowym. Szare są zbędne. Nie musisz mówić: "plik jest śledzony, modyfikowany i wystawiany". Wystarczy powiedzieć "plik jest wystawiony", ponieważ każdy plik etapowy jest modyfikowany i śledzony.

Po zorientowaniu się, łatwo można zrozumieć, że plik nierejestrowany można przenieść tylko do stanu zainscenizowanego. Odbywa się to poprzez:

git add [filename] 

Brak polecenia przeliczania:

  • nieśledzonej file => niemodyfikowana plików
  • untracked file => Unstaged plik
Powiązane problemy