文脈で:
git revert HEAD~2 myFile
fatal: bad revision '/Users/rose/gitTest/myFile'
HEAD〜2が存在すると確信しています。
編集琥珀は正しいです。reset
の代わりに使用するつもりでしrevert
た。
文脈で:
git revert HEAD~2 myFile
fatal: bad revision '/Users/rose/gitTest/myFile'
HEAD〜2が存在すると確信しています。
編集琥珀は正しいです。reset
の代わりに使用するつもりでしrevert
た。
特定のコミットで単一のファイルをその状態に戻すだけの場合は、実際には次のcheckout
コマンドを使用します。
git checkout HEAD~2 myFile
このコマンドは、コミット全体を元に戻すために使用されます(また、revert
そのコミットに戻ることはありません。実際には、そのコミットによって行われた変更を元に戻すだけです。指定したコミットの後に別のコミットがある場合、後のコミットは元に戻されません。 )。
IntelliJでこのエラーが発生しましたが、これらの回答はどれも役に立ちませんでした。これが私がそれを解決した方法です。
どういうわけか私のサブモジュールの1つが.git
ディレクトリを追加しました。削除した後、すべてのgit機能が返されました。
git revert
ファイル名パラメータを取りません。欲しいgit checkout
ですか?
サブモジュールやサブツリーを適切に使用せずに、別のディレクトリ内にgitディレクトリがあったため、Idea / Webstormで「致命的:不正なリビジョン」が発生しました。
.git
私はdirsをチェックしました:
find ./ -name '.git' -print
ドキュメントから:
1つ以上の既存のコミットが与えられた場合、関連するパッチによって導入された変更を元に戻します...
myFile
git revert
ファイルパスを受け入れないため、コミットとして解釈されます。コミットするだけ
以前のコミットと一致するように1つのファイルを変更するには、次を使用しますgit checkout
git checkout HEAD~2 myFile
Intellijでも同様の問題が発生しました。問題は、Gitから実際にファイルを削除せずに、誰かがIntellijで比較しようとしているファイルを.gitignoreに追加したことでした。
コミットを削除したい場合は、gitrebaseコマンドを使用する必要があるかもしれません
git rebase -i HEAD〜2
最後の2つのコミットメッセージが表示されます。コミットメッセージを削除してそのファイルを保存すると、削除されたコミットは自動的に消えます...
なぜmyFile
そこに指定するのですか?
Git revertは、指定したコミットを元に戻します。
git revert HEAD~2
HEAD~2
コミットを元に戻します
git revert HEAD~2 myfile
HEAD~2
ANDを元に戻しますmyFile
私が取るmyFile
のはあなたが元に戻したいファイルですか?その場合は使用
git checkout HEAD~2 -- myFile
私の場合、問題のファイル(コミットハッシュが正しくない)が実際にGitに追加されていないという一貫性のない状態がありました。これは、IntelliJの状態と何らかの形で衝突しました。コマンドラインでgitを使用してファイルを手動で追加すると、問題が修正されました。