2017-01-09 2 views
2

Ich führe diesen Befehl auf die zweite Datei, die ich entfernen möchte (die erste war JetBrains '.idea Ordner Dateien, die jetzt in .gitignore), aber ich bin nicht Lage:git sagt, ich habe Änderungen nicht vorgenommen, aber ich zeige sie nicht

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch gf5/console/basic.php' --prune-empty --tag-name-filter cat -- --all 
Cannot rewrite branches: You have unstaged changes. 

wie kann ich wissen, was „unstaged“ Dateien git bezieht sich auf, wenn er sie auflistet, und wie kann ich dieses Problem beheben?

PS das Problem ist nicht stash (es), ich habe keine und habe keine Verstecke auf diese Repo jemals gemacht.

HINWEIS: habe ich eine git status und erhalten diese:

Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

    modified: gf5/console/basic.php 

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

//(and a whole long list of files) 
+1

Gibt 'git status' irgendetwas zurück? –

Antwort

5

AHA !! Ich habe herausgefunden, was vor sich geht. Lesen Sie die letzten Sätze für einen kleinen Einblick.

Die Antwort war nicht zum ersten:

git status 

Diese in RED geänderten Dateien zeigte, das nehme ich an bedeutet, dass sie in git Geist irgendwie „gelöscht“ werden. Ich habe dann:

git add --all 

Von dort ich verpflichtet, alle inszenierten Dateien mit SourceTree (sorry ich nicht mit der Kommandozeile den ganzen Weg zu bleiben haben). Ich ging voran und schob Änderungen gleichzeitig auf den Server, aber das wäre optional.

Der obige Befehl hat dann erfolgreich funktioniert.

Als ich versuchte, den obigen Befehl für eine andere Datei auszuführen, hatte ich das gleiche Problem. Also lief ich wieder git status und es stellt sich heraus, dass die Datei, die ich gerade aus der Geschichte entfernt ist noch dort und so müssen Sie dies tun:

git rm /previous_file_you_just_removed_from_history.php 

auch zu klären, der Filter-Zweig Befehl entfernt die Verlauf dieser Datei von allen Commits, aber es werden NICHT die Änderungen, die Sie an dieser Datei vorgenommen haben, gelöscht. I.e. Diese entfernte Datei ist immer noch die Summe aller Änderungen, die Sie bis zu diesem Zeitpunkt vorgenommen haben. Ich hoffe, dass dies hilft, dieses Konzept für jemand anderen zu klären.

+2

Nein, nicht "gelöscht", nur geändert. –

Verwandte Themen