2017-04-26 7 views
-1

Nach der weiteren Entwicklung muss ich weitere Änderungen zum vorherigen Commit hinzufügen."git commit --amend" ohne "git add"/Ändern des Staging-Bereichs

ich viele Änderungen von IDE einschließlich gemacht haben, dass Griff Datei umbenennt, Erstellen neuer Dateien usw.

So git status eine Menge von Dateien in Staging-Bereich zeigt.

Ich möchte diese Dateien nicht mit git commit --amend --no-message hinzufügen.

Kann ich diese Dateien als Argumente für git commit --amend --no-message auflisten? Irgendwelche anderen Möglichkeiten ohne Index zu stören?

Ich denke über den Index stashing - aber es ist kompliziert, was 40 Dateien aufzulisten, anstatt 2-Dateien zu ignorieren, für ändern ....

+0

Verwenden Sie 'git reset', um Dateien zu entsperren. –

+0

IDE hilft mir, neue Dateien hinzufügen, alte umbenennen und ich don t, diese Arbeit zu verlieren. – gavenkoa

+0

16k + und alles auf IDE verlassen? Wie dem auch sei, 'git reset' verändert deine Arbeit nicht, sondern ändert nur den Status von" gestuft "in" nicht gesetzt ". –

Antwort

0

Nach dem Experimentieren fand ich eine einfache (und offensichtlich) Lösung:

$ echo x >> file1 
$ echo x >> file2 
$ echo y >> fileZZZ 

(1)$ git add . 

(2)$ git ci -m fix file1 

(3)$ git commit --no-edit --amend file2 

Bei (1) fülle ich Index. Bei (2) begehe ich notwendige Dateien und lasse alle anderen (file2 und fileZZZ) im Index, bei (3) Ich füge das fehlende file2 ein, das fileZZZ im Index verlassen verlässt.

Es ist möglich, mit Git so zu arbeiten, als ob es keinen Staging-Bereich gäbe.

1

Die meisten IDE spiegeln den Staging-Bereich für echte Git-Operationen wider. (Ich verwende VS-Code, und es funktioniert.) Also, zuerst unstage alle Dateien mit:

git reset . 

Dann stellen Sie Ihre Dateien über git add oder die IDE-Tasten inszeniert werden. Abhängig von der IDE-Schnittstelle sollte es eine Plus-Schaltfläche für eine Datei geben.

Schließlich ausführen git commit --amend --no-message. Die Semantik sollte identisch mit dem normalen Commit sein.


Wenn Sie nicht herausfinden, wie die Dinge oben zu tun, eine interaktive rebase tun Commits auch Squash hilft. Siehe How to modify existing, unpushed commits?