Co oznacza „Zmiany, które nie zostały wprowadzone do zatwierdzenia”


239

Pomyślałem, że jeśli chcesz śledzić pliki, powinieneś git add [files you want to track]

Nie wiem, dlaczego dostałem wiadomości Changes not staged for commit.

Jeśli te pliki nie były przemieszczane, nie powinny gitpokazywać, że takie pliki były Untrackedtakie

wprowadź opis zdjęcia tutaj

Wszystko, co zrobiłem, to stworzyłem nową funkcję z developoddziału i pracowałem w feature/change_excel_formatoddziale

Myślałem, że te pliki powinny mieć stagedstatus,

Ale git statuspowiedział miChanges not staged for commit

wprowadź opis zdjęcia tutaj

Aby skrócie, wiem tylko tam są 3 etapy w git untracked, staged, committed Może ktoś mi powiedzieć, jaki był etap dlaChanges not staged for commit wprowadź opis zdjęcia tutaj

Więc jeśli zmodyfikowałem plik a (już w repozytorium)

i wpisz git st, git mi powieChanges not staged for commit

jeśli ja, git ato plik abędziestaged status

gdybym zmodyfikował file ateraz będą dwa status file aw git, prawda?

Muszę więc zdecydować, czy dokonać staged azatwierdzenia, czy wprowadzić not stage ascenę, a wtedy poprzednia inscenizacja file azostanie odrzucona?

wprowadź opis zdjęcia tutaj


3
jeśli otrzymujesz ten komunikat i chcesz, aby ten plik (a) musiał zatwierdzić, upewnij się, że znajdujesz się we właściwej ścieżce katalogu (ścieżka katalogu głównego dla dodawania wszystkich) podczas dodawania
Sadee

Odpowiedzi:


325

kiedy zmieniasz plik, który jest już w repozytorium, musisz git addgo ponownie, jeśli chcesz, aby był on przemieszczany.

Umożliwia to zatwierdzenie tylko części zmian wprowadzonych od czasu ostatniego zatwierdzenia. Załóżmy na przykład, że masz plik a, plik bi plik c. Zmieniasz plik ai plik, bale zmiany mają bardzo różny charakter i nie chcesz, aby wszystkie były w jednym zatwierdzeniu. Ty wydajesz

git add a
git commit a -m "bugfix, in a"
git add b
git commit b -m "new feature, in b"

Na marginesie, jeśli chcesz zatwierdzić wszystko, możesz po prostu wpisać

git commit -a

Mam nadzieję, że to pomoże.


1
Więc jeśli te pliki są już w repo. i zmieniłem je, mogę też git commit THEMbezpośrednio, bez ich dodawania, prawda?
newBike

1
oczywiście. W takim przypadku zatwierdzone zostaną tylko wymienione pliki, niezależnie od obecności zmian etapowych w różnych plikach.
Stefano Falasca

1
Mam ten sam problem, ale mój problem dotyczył również podmodułu przyczyny nieśledzonych plików. Więc w moim podkatalogu dodaję również wszystkie zmiany za pomocą git i problem zniknął.
elia

1
Już to zrobiłem git clean -fdi wciąż to otrzymuję. Chcę się pozbyć wszystkich zmian. Co jeszcze powinienem robić?
Kochanie,

3
git commit -anie popełnia wszystkiego, tylko zaktualizowane pliki, nie nowe ...
Martin

62

Musisz użyć git add, aby je wystawić, w przeciwnym razie nie zostaną zatwierdzone. Przyjmij, że informuje git, jakie zmiany chcesz zatwierdzić.

git add -u :/dodaje wszystkie zmodyfikowane zmiany plików do git add * :/stołu montażowego dodaje zmodyfikowane i wszelkie nowe pliki (które nie są gitignore'ed) do stołu montażowego


2
Ta odpowiedź jest jasna i zwięzła w porównaniu do powyższej, dlatego ją uwielbiam. ;)
oaxacamatt

13

To inny sposób, w jaki Git mówi ci:

Hej, widzę, że dokonałeś pewnych zmian, ale pamiętaj, że kiedy piszesz strony do mojej historii, zmiany te nie będą na tych stronach.

Zmiany w plikach nie są przenoszone, jeśli nie zostaną jawnie git add(i to ma sens).

Więc kiedy ty git commit, te zmiany nie zostaną dodane, ponieważ nie są wprowadzane. Jeśli chcesz je zatwierdzić, musisz je najpierw wystawić (tj. git add).


2
Ale nie zmieniłem pliku, do którego się odwołuje
Eoin

1
Nie rozumiem, jak dokładnie to zachowanie ma sens. Jeśli już powiedziałem add .Gitowi, aby śledził plik, robiąc to podczas konfigurowania repostiry, i może wykryć, że wprowadziłem w nim zmiany, dlaczego muszę jawnie dodawać pliki przy każdym zatwierdzeniu? Wystarczy wprowadzić zmiany do pliku, muszę add, commit i push . Rozgraniczenie pomiędzy commiti pchnięcie ma dla mnie sens, rozgraniczenie między addi commitwydaje się absurdalnie zbędne.
Prometeusz

1
@Hashim Zgadzam się, naprawdę nie rozumiem logiki.
Herman Toothrot

6

Wykonaj poniższe kroki:

1- git stash
2- git add.
3- git commit -m „twoja wiadomość zatwierdzenia”


5
git stash usunął wszystkie moje zmiany, było 10 godzin pracy :(
viniciussvl

13
jeśli użyłeś „git stash”, umieścisz te zmiany w „tymczasowym miejscu”, aby je odzyskać, po prostu wpisz „git stash pop”, aby uzyskać zmianę z „tymczasowego miejsca”
Cyrus Zei

12
NIE UŻYWAJ git skrytki, dopóki nie przeczytasz komentarza @viniciussvl i Cyrus
shabby

1
Dlaczego miałbym nawet używać git skrytki w tym przypadku?
Tobias Kaufmann

4

Załóżmy, że zapisałeś nowe zmiany pliku. (na przykład navbar.component.html)

Biegać:

ng status
modified:   src/app/components/shared/navbar/navbar.component.html

Jeśli chcesz przesłać te zmiany dla tego pliku, musisz uruchomić:

git add src/app/components/shared/navbar/navbar.component.html

I wtedy:

git commit src/app/components/shared/navbar/navbar.component.html -m "new navbar changes and fixes"

I wtedy:

git push origin [your branch name, usually "master"]

-------------------------------------------------- -------------

Lub jeśli chcesz przesłać wszystkie swoje zmiany (kilka / wszystkie pliki):

git commit -a

I na ekranie pojawi się komunikat „Wprowadź komunikat zatwierdzenia zmian”.

  • Zobaczysz tę wiadomość, jeśli wykonasz zatwierdzenie bez wiadomości (-m)
  • Możesz z niego wyjść w dwóch krokach:
  • 1.a. Wpisz wieloliniową wiadomość, aby przejść do przodu z zatwierdzeniem.
  • 1.b. Pozostaw puste, aby przerwać zatwierdzenie.
    1. Naciśnij „esc”, a następnie wpisz „: wq” i naciśnij Enter, aby zapisać swój wybór. Altówka!

I wtedy:

git push

I Viola!


2
To samo, co powiedziałem powyżej: git commit -anie przesyła wszystkich zmian, nie zawiera nowych plików. Aktualizacje będą zatwierdzać tylko dla istniejących plików.
Martin

3

Spróbuj wykonać int git bash

1.git add -u :/

2)git commit -m "your commit message"

  1. git push -u origin master

Uwaga: jeśli nie zainicjowałeś swojego repo.

Po pierwsze

git init 

i wykonaj powyższe kroki w kolejności. To zadziałało dla mnie


Ten problem zadziałał dla mnie w przypadku konfliktu git, w którym nie mogłem usunąć pliku z mojego lokalnego repozytorium i zatwierdzić z lokalnego repozytorium do zdalnej gałęzi głównej.
Siwoku Adeola

1

oznacza to, że nie są dodawane do zatwierdzenia, będziesz musiał zrobić git add scripts / excel_parser.py i lubi je wystawiać. Gdy zostaną wystawione, kiedy zrobisz status git, zostaną one zainscenizowane i git commit je zatwierdzi

możesz zatwierdzić -a -m „all checkin”, który automatycznie wyreżyseruje i zatwierdzi wszystkie pliki w drzewie


1

Ten błąd może pojawić się po dodaniu nowego pliku do kodu i próbie zatwierdzenia kodu bez przemieszczania go (dodawania).

Aby temu zaradzić, możesz najpierw dodać plik, używając git add ( git add your_file_name.py), a następnie zatwierdzając zmiany ( git commit -m "Rename Files" -m "Sample script to rename files as you like")


1

Przeczytałem wszystkie powyższe odpowiedzi i wypróbowałem w terminalu następujące kroki, które działają dobrze w przypadku aktualizacji nowych i zmiany plików w systemie głównym.

1) git add. 2) git commit -m "twoja wiadomość" 3) git push master master

Mam nadzieję, że to Ci pomoże.


1

Podczas dodawania git możesz znajdować się w niewłaściwym katalogu. :-)


-7

Usunąć dir/.../.git

pracuje dla mnie.


Twoja odpowiedź wymaga dodatkowych informacji lub wglądu w to, dlaczego i jak Ci się to udało.
Joshua K

Jak na razie odpowiedź nie potwierdza pytania. Proszę rozważyć zmianę lub dodanie dalszych informacji.
Francisco Maria Calisto
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.