Git commit -a „nieśledzone pliki”?

93

Kiedy robię git commit -a, widzę następujące informacje:

  # Please enter the commit message for your changes. Lines starting
  # with '#' will be ignored, and an empty message aborts the commit.
  # On branch better_tag_show
  # Changes to be committed:
  #   (use "git reset HEAD <file>..." to unstage)
  #
  # modified:   ../assets/stylesheets/application.css
  # modified:   ../views/pages/home.html.erb
  # modified:   ../views/tags/show.html.erb
  # modified:   ../../db/seeds.rb
  #
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  # ../assets/stylesheets/
  # ../views/pages/

Co oznaczają te nieśledzone pliki? Wszystkie zmiany były rzeczywiście śledzone. Nie rozumiem, dlaczego git ostrzega mnie tutaj o nieśledzonych plikach.

EDYCJA :

Ok, widzę wiele pomieszanych odpowiedzi. Oto, co dzieje się po git commit -atym.

# On branch master
nothing to commit (working directory clean)

Jak widać, nie ma NIC poza tymi czterema plikami, do których zastosowano zmiany.

Moje pytanie powinno zostać przeformułowane w następujący sposób: Dlaczego git ostrzega mnie o nieśledzonych plikach, gdy śledzone są wszystkie zmiany w tym zatwierdzeniu?

Innymi słowy, czy nieśledzone ostrzeżenie w komunikacie git commit jest niepotrzebne ?

zniknął
źródło
1
(use "git add <file>..." to include in what will be committed)
zengr
1
zengr, który nie jest konieczny, ponieważ git commit -a zatwierdzi wszystkie zmiany w śledzonych plikach.
zniknął
3
Jest to konieczne, gdy dotychczas pliki nie były addedytowane. Z dokumentacji dla -a: Powiedz komendzie, aby automatycznie przygotowywała pliki, które zostały zmodyfikowane i usunięte, ale nie ma to wpływu na nowe pliki, o których nie poinformowałeś git .
Noufal Ibrahim
Dlaczego mówisz, że dupek cię „ostrzega”? Jak widzę, komunikat „nieśledzone” pliki ma charakter informacyjny. Do Ciebie należy sprawdzenie, czy te pliki wymagają zarządzania i odpowiednie działania.
sateesh
@sateesh Cóż, jakkolwiek chcesz to nazwać, nadal nie sądzę, żeby to było naprawdę pomocne. Jak to jest pouczające? Co powinienem zrobić? Czy przeczytałeś mój post w sekcji "EDYTUJ", w którym napisałem, że nie ma żadnych modyfikacji w żadnym innym pliku poza wymienionymi powyżej? Jeśli uznasz to za przydatne, jest to równoważne z tym, że powiedziałem ci, że żaden losowy folder w drzewie repozytoriów nie będzie śledzony, jeśli nie ma się czym martwić.
zniknął

Odpowiedzi:

105

Jeśli inni mają ten sam problem, spróbuj uruchomić

git add . który doda wszystkie pliki z bieżącego katalogu do śledzenia (w tym nieśledzone), a następnie użyje

git commit -a zatwierdzić wszystkie śledzone pliki.

Zgodnie z sugestią @Pacerier, jedna wkładka, która robi to samo, to

git add -A

coding_idiot
źródło
5
git commit -azatwierdzi wszystkie śledzone pliki, a nie śledzi nieśledzone pliki. git add .będzie śledzić nieśledzone pliki w bieżącym katalogu. git add -abędzie śledzić wszystkie nieśledzone pliki.
tutaj
@matteo to git add -Anie git commit -A. O ile wiem, nie ma przełącznika, do którego można by przejść git commit, obejmującego nieśledzone pliki.
Len,
1
-a wydaje się być teraz przestarzała tylko dla A. Mimo wszystko dziękuję. :)
tcratius
Aby uzyskać więcej informacji na temat tych poleceń, możesz sprawdzić: stackoverflow.com/questions/572549/…
Onat Korucu
30

git commit -am "msg"to nie to samo co git add fileigit commit -m "msg"

Jeśli masz jakieś pliki, które nigdy nie zostały dodane do śledzenia git, nadal musisz to zrobić git add file

Polecenie „git commit -a” jest skrótem do dwuetapowego procesu. Po zmodyfikowaniu pliku, który jest już znany repozytorium, nadal musisz powiedzieć repozytorium: „Hej! Chcę to dodać do przygotowanych plików i ostatecznie przekazać to tobie. ” Odbywa się to poprzez wydanie polecenia „git add”. „Git commit -a” to przemieszczanie pliku i zatwierdzanie go w jednym kroku.

Źródło: „git commit -a” i „git add”

zengr
źródło
ale, jak powiedziałeś, git commit -a = git add. + git commit, dlaczego nie doda automatycznie pliku do obszaru śledzenia ?? ....
Johnny,
1
@Johnny: git commit -anie jest równe git add .+ git commit. Ten git addkrok dodaje tylko te pliki, które są wymienione jako zmodyfikowane w Twoim git statuskatalogu, a nie wszystko w bieżącym katalogu.
Soren Bjornstad
Tak, odkryłem to dzisiaj!
KansaiRobot
9

Powinieneś wpisać w linii poleceń

git add --all

Spowoduje to zatwierdzenie wszystkich nieśledzonych plików

Edytować:

Po przygotowaniu plików są gotowe do zatwierdzenia, więc powinno być wykonane następne polecenie

git commit -am "Your commit message"
Travis Delly
źródło
5
Powoduje to etapowanie wszystkich plików, a nie ich zatwierdzanie . Nadal musisz to zrobić osobno.
Saeb Amini
8
  1. Najpierw musisz dodać wszystkie nieśledzone pliki. Użyj tego wiersza poleceń:

    git add *

  2. Następnie zatwierdź za pomocą tego wiersza poleceń:

    git commit -a

Mohamad
źródło
7

Jeśli masz problemy z nieśledzonymi plikami, ten 3-liniowy skrypt Ci pomoże.

git rm -r --cached .
git add -A
git commit -am 'fix'

Wtedy po prostu git push

AliFurkan
źródło
To działa dla mnie, ponieważ musiałem usunąć śledzone pliki, które teraz ignoruję.
spyder man
3

Jak sama nazwa wskazuje, „nieśledzone pliki” to pliki, które nie są śledzone przez git. Nie ma ich w twojej strefie przeciwności i nie były częścią żadnych poprzednich zatwierdzeń. Jeśli chcesz, aby były one wersjonowane (lub zarządzane przez git), możesz to zrobić, mówiąc „git” za pomocą polecenia „git add”. Sprawdź ten rozdział Rejestrowanie zmian w repozytorium w książce Progit, w którym zastosowano ładną grafikę, aby zapewnić dobre wyjaśnienie rejestrowania zmian w repozytorium git, a także wyjaśnienie terminów „śledzony” i „nieśledzony”.

sateesh
źródło
1
+1 w odniesieniu do progit. zaktualizuj adres URL do v2 git-scm.com/book/en/v2 i git-scm.com/book/en/v2/ ...
stefan123t
Gotowe, zaktualizowane odniesienia do Progit.
sateesh
0

Upewnij się, że jesteś we właściwym katalogu (głównym folderze repozytorium) w lokalnym git, aby mógł znaleźć konfigurację folderu .git przed zatwierdzeniem lub dodaniem plików.

einarc
źródło
To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem. - Z recenzji
sampathsris,