Im Kontext:
git revert HEAD~2 myFile
fatal: bad revision '/Users/rose/gitTest/myFile'
Ich bin sicher, dass HEAD ~ 2 existiert.
EDIT Amber ist korrekt. Ich wollte resetanstelle von verwenden revert.
Im Kontext:
git revert HEAD~2 myFile
fatal: bad revision '/Users/rose/gitTest/myFile'
Ich bin sicher, dass HEAD ~ 2 existiert.
EDIT Amber ist korrekt. Ich wollte resetanstelle von verwenden revert.
Antworten:
Wenn Sie nur eine einzelne Datei in einem bestimmten Commit in ihren Status zurücksetzen möchten, möchten Sie tatsächlich den folgenden checkoutBefehl verwenden:
git checkout HEAD~2 myFile
Der revertBefehl wird für die Rück gesamte Commits verwendet (und es spielt zurückkehren Sie nicht zu , dass begehen, sondern eigentlich nur die Änderungen kehrt gemacht durch die begehen - wenn Sie eine andere begehen nach dem einen haben Sie angeben, die später begehen nicht rückgängig gemacht werden ).
Ich habe diesen Fehler in IntelliJ erhalten, und keine dieser Antworten hat mir geholfen. So habe ich es gelöst.
Irgendwie hat eines meiner Submodule ein .gitVerzeichnis hinzugefügt . Alle Git-Funktionen wurden zurückgegeben, nachdem ich sie gelöscht habe.
.git.
/Users/myusername/Developer/myProject/anstatt gesetzt <Project>und der Fehler ist auch für mich verschwunden. Einige andere Ordner waren .gitdarin und IntelliJ muss verwirrt gewesen sein.
git revertnimmt keinen Dateinamenparameter an. Wollen Sie git checkout?
Ich hatte eine "fatal: bad revision" mit Idea / Webstorm, weil ich ein Git-Verzeichnis in einem anderen hatte, ohne die richtigen Submodule oder Subbäume zu verwenden.
Ich habe nach .gitDirs gesucht mit:
find ./ -name '.git' -print
Aus den Dokumenten:
Setzen Sie bei einem oder mehreren vorhandenen Commits die Änderungen zurück, die durch die zugehörigen Patches eingeführt werden ...
myFilewird als Commit interpretiert - da git revertkeine Dateipfade akzeptiert werden; begeht nur
Um eine Datei so zu ändern, dass sie mit einem vorherigen Commit übereinstimmt, verwenden Sie git checkout
git checkout HEAD~2 myFile
Warum spezifizierst du myFiledort?
Git Revert setzt die von Ihnen angegebenen Commits zurück.
git revert HEAD~2
Setzt das HEAD~2Commit zurück
git revert HEAD~2 myfile
kehrt HEAD~2UND zurückmyFile
Ich nehme an, myFileist eine Datei, die Sie zurücksetzen möchten? In diesem Fall verwenden
git checkout HEAD~2 -- myFile
Wenn Sie ein Commit löschen möchten, müssen Sie möglicherweise den Befehl git rebase verwenden
Git Rebase -i HEAD ~ 2
Es werden die letzten 2 Festschreibungsnachrichten angezeigt. Wenn Sie die Festschreibungsnachricht löschen und diese Datei speichern, wird die gelöschte Festschreibung automatisch ausgeblendet ...
In meinem Fall hatte ich einen inkonsistenten Status, in dem die betreffende Datei (mit dem fehlerhaften Commit-Hash) nicht tatsächlich zu Git hinzugefügt wurde. Dies kollidierte irgendwie mit dem Status von IntelliJ. Das manuelle Hinzufügen der Datei mit git in der Befehlszeile hat das Problem für mich behoben.