Was bedeutet "Änderungen, die nicht für das Festschreiben bereitgestellt wurden"?

238

Ich dachte, wenn Sie die Dateien verfolgen möchten, sollten Sie git add [files you want to track]

Ich weiß nicht, warum ich die Nachrichten bekommen habe Changes not staged for commit.

Wenn diese Dateien nicht aufgeführt wurden, sollten nicht gitzeigt mir diese Dateien waren Untrackedähnlich

Geben Sie hier die Bildbeschreibung ein

Ich habe lediglich eine neue Funktion aus der developFiliale erstellt und in der feature/change_excel_formatFiliale gearbeitet

Ich dachte, diese Dateien sollten im stagedStatus sein,

Aber git statushat es mir gesagtChanges not staged for commit

Geben Sie hier die Bildbeschreibung ein

Um es kurz zu machen, ich weiß nur, dass es 3 Stufen in Git untrackedgibt staged. committed Kann mir jemand sagen, wofür die Stufe war?Changes not staged for commit Geben Sie hier die Bildbeschreibung ein

Also, wenn ich die Datei geändert habe a (bereits im Repo)

und tippe git st, der Git wird es mir sagenChanges not staged for commit

Wenn ich git adann wird die Datei ain seinstaged status

Wenn ich das file ajetzt geändert habe , gibt es zwei Status von file ain git, richtig?

Also muss ich mich entscheiden, ob das staged aCommit oder das not stage aInszenierte gemacht werden soll, und dann wird das vorherige Inszeniert file averworfen?

Geben Sie hier die Bildbeschreibung ein

neues Fahrrad
quelle
3
Wenn Sie diese Nachricht erhalten und möchten, dass diese Datei (a) festgeschrieben wird, stellen Sie sicher, dass Sie sich im richtigen Verzeichnispfad befinden (Projektstammpfad für alle hinzufügen), während Sie hinzufügen
Sadee

Antworten:

324

Wenn Sie eine Datei ändern, die sich bereits im Repository befindet, müssen Sie git addsie erneut erstellen, wenn Sie möchten, dass sie bereitgestellt wird.

Auf diese Weise können Sie nur einen Teil der Änderungen festschreiben, die Sie seit dem letzten Festschreiben vorgenommen haben. Angenommen, Sie haben Datei a, Datei bund Datei c. Sie ändern Datei aund Datei, baber die Änderungen sind sehr unterschiedlich und Sie möchten nicht, dass sich alle in einem einzigen Commit befinden. Sie geben aus

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

Als Randnotiz, wenn Sie alles festschreiben möchten, können Sie einfach eingeben

git commit -a

Ich hoffe es hilft.

Stefano Falasca
quelle
1
Also, wenn diese Dateien schon im Repo sind. und ich habe sie geändert, ich kann sie auch git commit THEMdirekt ohne hinzufügen, oder?
NewBike
1
natürlich. In diesem Fall werden nur die aufgelisteten Dateien festgeschrieben, unabhängig davon, ob in verschiedenen Dateien schrittweise Änderungen vorgenommen wurden.
Stefano Falasca
1
Ich habe das gleiche Problem, aber mein Problem betraf auch die Ursache des Submoduls für nicht verfolgte Dateien. Also füge ich in meinem Unterverzeichnis auch alle Änderungen mit git hinzu und das Problem ist weg.
Elia
1
Ich habe es bereits getan git clean -fdund bekomme es immer noch. Ich möchte alle Änderungen loswerden. Was soll ich sonst noch tun?
Honig
3
git commit -alegt nicht alles fest, nur die aktualisierten Dateien, nicht die neuen ...
Martin
62

Sie müssen git add verwenden, um sie zu inszenieren, sonst werden sie nicht festgeschrieben. Nehmen wir an, es informiert git darüber, welche Änderungen Sie übernehmen möchten.

git add -u :/Fügt alle geänderten Dateiänderungen zur Bühne git add * :/hinzu. Fügt der Bühne modifizierte und alle neuen Dateien (die nicht gitignore'ed sind) hinzu

Dannie
quelle
2
Diese Antwort ist klar und prägnant im Vergleich zu der obigen, deshalb liebe ich sie. ;)
Oaxacamatt
12

Es ist eine andere Art, wie Git dir sagt:

Hey, ich sehe, dass Sie einige Änderungen vorgenommen haben, aber denken Sie daran, dass diese Änderungen nicht in diesen Seiten enthalten sind, wenn Sie Seiten in meinen Verlauf schreiben.

Änderungen an Dateien werden nicht bereitgestellt, wenn Sie sie nicht explizit git addausführen (und dies ist sinnvoll).

Wenn Sie dies tun git commit, werden diese Änderungen nicht hinzugefügt, da sie nicht bereitgestellt werden. Wenn Sie sie festlegen möchten, müssen Sie sie zuerst inszenieren (dh git add).

Agis
quelle
2
Aber ich habe die Datei, auf die verwiesen wird, nicht geändert
Eoin
1
Ich verstehe nicht, wie genau dieses Verhalten Sinn macht. Wenn ich Git bereits add .beim Einrichten der Neuveröffentlichung angewiesen habe, eine Datei zu verfolgen, und festgestellt wird, dass ich Änderungen daran vorgenommen habe, warum muss ich bei jedem Festschreiben explizit Dateien hinzufügen? Nur um eine Änderung an einer Datei zu machen, muss ich add, commit und push . Die Abgrenzung zwischen commitund Push macht für mich Sinn, die Abgrenzung zwischen addund commitscheint lächerlich überflüssig.
Prometheus
1
@ Hashim Ich stimme zu, ich verstehe die Logik wirklich nicht.
Herman Toothrot
6

Folgen Sie den unteren Schritten:

1-Git-Stash
2-Git-Add.
3- git commit -m "Ihre Commit-Nachricht"

Mams
quelle
5
Git Stash entfernte alle meine Änderungen, da waren es 10 Stunden Arbeit :(
viniciussvl
13
Wenn Sie "git stash" verwendet haben, wurden diese Änderungen an einem "temporären Ort" abgelegt, um sie zurückzugewinnen. Geben Sie einfach "git stash pop" ein, um Ihre Änderung vom "temporären Ort" zu erhalten
Cyrus Zei
12
VERWENDEN SIE git stash erst, wenn Sie den Kommentar von @viniciussvl und Cyrus gelesen haben
schäbig
1
Warum sollte ich in diesem Fall überhaupt Git Stash verwenden?
Tobias Kaufmann
4

Angenommen, Sie haben eine neue Datei geändert. (navbar.component.html zum Beispiel)

Lauf:

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

Wenn Sie diese Änderungen für diese Datei hochladen möchten, müssen Sie Folgendes ausführen:

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

Und dann:

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

Und dann:

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

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

Oder wenn Sie alle Ihre Änderungen (mehrere / alle Dateien) hochladen möchten:

git commit -a

Und ihnen wird Folgendes angezeigt: "Bitte geben Sie die Festschreibungsnachricht für Ihre Änderungen ein."

  • Diese Meldung wird angezeigt, wenn Sie ein Commit ohne Nachricht (-m) ausführen.
  • Sie können mit zwei Schritten herauskommen:
  • 1.a. Geben Sie eine mehrzeilige Nachricht ein, um mit dem Commit voranzukommen.
  • 1.b. Lassen Sie das Feld leer, um das Festschreiben abzubrechen.
    1. Drücken Sie "esc", geben Sie ": wq" ein und drücken Sie die Eingabetaste, um Ihre Auswahl zu speichern. Viola!

Und dann:

git push

Und Viola!

David Castro
quelle
2
Das Gleiche, das ich oben gesagt habe: git commit -aLädt nicht alle Änderungen hoch , es enthält nicht die neuen Dateien. Die Aktualisierungen werden nur für vorhandene Dateien festgeschrieben.
Martin
3

Versuchen Sie, int git bash zu folgen

1.git add -u :/

2.git commit -m "your commit message"

  1. git push -u origin master

Hinweis: Wenn Sie Ihr Repo nicht initialisiert haben.

Zuerst

git init 

und befolgen Sie die oben genannten Schritte der Reihe nach. Das hat bei mir funktioniert

Amila Weerasinghe
quelle
Dieses Problem trat bei einem Git-Konflikt auf, bei dem ich eine Datei nicht aus meinem lokalen Repository löschen und vom lokalen Repository in den Remote-Master-Zweig übertragen konnte.
Siwoku Adeola
1

Es bedeutet, dass sie nicht hinzugefügt werden, um festgeschrieben zu werden. Sie müssen git add scripts / excel_parser.py ausführen und die Likes, um sie zu inszenieren. Sobald sie beim Git-Status bereitgestellt werden, werden sie bereitgestellt und git commit schreibt sie fest

von Ihnen können git commit -a -m "all checkin" geben, das automatisch alle Dateien im Baum bereitstellt und festschreibt

LeMoN.xaH
quelle
1

Möglicherweise wird dieser Fehler angezeigt, wenn Sie Ihrem Code eine neue Datei hinzugefügt haben und nun versuchen, den Code festzuschreiben, ohne ihn bereitzustellen (hinzuzufügen).

Um dies zu überwinden, können Sie die Datei zuerst mit git add ( git add your_file_name.py) hinzufügen und dann die Änderungen ( git commit -m "Rename Files" -m "Sample script to rename files as you like") festschreiben.

Waqas Khalid Obeidy
quelle
1

Ich habe alle obigen Antworten gelesen und im Terminal die folgenden Schritte versucht, die gut zum Aktualisieren neuer und zum Ändern von Dateien auf dem Master funktionieren.

1) git hinzufügen. 2) git commit -m "Ihre Nachricht" 3) git push origin master

Ich hoffe das hilft dir.

Ksaroz Shrestha
quelle
1

Sie befinden sich möglicherweise im falschen Verzeichnis, wenn Sie git add ausführen. :-)

Blenden
quelle
-7

Entfernen dir/.../.git

funktioniert bei mir.

Aji-Stapel
quelle
Ihre Antwort benötigt Hintergrundinformationen oder Einblicke, warum oder wie es bei Ihnen funktioniert hat.
Joshua K
Die Antwort unterstützt die Frage nicht. Bitte überlegen Sie, weitere Informationen zu ändern oder hinzuzufügen.
Francisco Maria Calisto