2012-04-12 13 views
9

Ich habe einen Commit auf einen Repo übertragen, wo ich versehentlich eine Datei hinzugefügt habe. Niemand hat sich aus dem Remote-Repo zusammengeschlossen, so dass ich die Geschichte neu schreiben kann. Aber wenn ich eine Datei aus dem Local Commit entferne (nicht aufheben, nicht von der Quellcodeverwaltung oder der Festplatte entfernen), kann ich keine Änderungen vornehmen. git push zeigt alles up-to-dateDatei aus dem geänderten Commit entfernen

Antwort

3

Während ich etwas tat, ähnlich dem, was Colin und ydroneaud vorgeschlagen haben,

Die Antwort war

zu verwenden
git push +sa1:sa1 

wo sa1 mein Zweig ist. Dies zwingt dazu, sogar "nichts" zu drücken.

4

Versuchen:

git rm --cached <yourfile> 
git commit --amend 
git push -f 
+0

Ich möchte die Datei nicht aus Tracking entfernen, nur aus dem Festschreiben. – sa1

+0

@ sa1 es gibt kein Tracking-Konzept in Git, Ihre Datei ist entweder oder ist nicht in Ihrem letzten Commit, das ist alles. Die andere Möglichkeit besteht darin, die Datei dort zu belassen, aber keinen Inhalt oder Teil davon zu entfernen. Git ist nur ein "dummer Inhalts-Tracker", der von einem "Dateisystem-Typen" gemacht wird. ;) – KurzedMetal

+0

@KurzedMetal Es gibt ein Konzept von verfolgten Dateien. Was Sie hier tun, ist das Entfernen der Datei aus den verfolgten Dateien. Was er tun möchte, ist das Entfernen der Änderungen, die an einer Datei bei einem Commit vorgenommen wurden. –

5

Wenn Sie die volle verpflichten umschreiben müssen, versuchen

git reset HEAD^ 
git add <files to be part of the commit> 
# or git add -pu 
git commit -C <previous commit number> 

Vor diesem verwenden tun müssen Sie das halten letzte Commit-Nummer, um die Commit-Nachricht/das Datum/den Autor wiederverwenden zu können.

+0

Ich habe etwas ähnliches gemacht. Das Problem war, dass ich diese Änderungen nicht auf das Remote-Repository übertragen konnte. – sa1

9

Hier gehen Sie:

git checkout HEAD~ -- path/to/your/file 
git add path/to/your/file 
git commit --amend -C HEAD 

git diff -p HEAD~ -- path/to/your/file | git apply -R 
git commit --amend -C HEAD 

git reset HEAD~ -- path/to/your/file 
git commit --amend -C HEAD 
+0

Ich habe das getan. Das Problem war, dass die Änderungen nicht auf den Remote-Repo übertragen wurden. – sa1

+0

Du musst sie "drücken". –

+0

Push - Force war eines der Dinge, die ich ausprobiert hatte. – sa1

Verwandte Themen