
私のプッシュ操作は、同僚が作業していた同じブランチに 1 行コミットしたため失敗しました。私は自分のコミットをスタッシュするのを忘れていたため、同僚のコミットを元に戻して自分の変更にコピーしようとしました。そうすれば、送信コミットのみが存在するはずだと思いました。思ったようには機能しなかったため、同僚のコミットをリセットしようとしました。コミットを右クリックして、[リセット] -> [削除 --ハード] (Visual Studio 内) をクリックすると、同僚と私のコミットがすべて削除されました。
再度、変更をコミットしましたが、サーバーにプッシュできませんでした。コマンドは見つかりましたgit reflog
が、Git デスクトップ クライアントを使用せずに使用できるかどうかはわかりません。
SSH クライアントを使用して、サーバーからプッシュされていないコミットを見つける方法はありますか? それとも、すべてを書き換えたほうがよいのでしょうか? 約 50 〜 100 行のコードが失われています。
解決済み:
Visual Studioの左上隅にあるGitメニューを使用 -> コマンドプロンプトで開く
git reflog
それから
git cherry-pick <SHA-1>
ここで、SHA-1 はブランチのヘッド (例: HEAD@{1}) であり、これは以下のリンクの user1686 の回答で説明されています。
答え1
またはgit reflog
、git fsck --unreachable
https://stackoverflow.com/questions/30035998/deleted-branch-unexpectedly-git-in-visual-studio最近失われたコミットを見つけることができます。
ただし、リカバリメソッドは、コミットが保存されているリポジトリで実行する必要があります。だったコミットが正常にプッシュされなかった場合、コミットは Git サーバー上に存在せず、VS のローカル Git リポジトリにのみ存在します。
(サーバー リポジトリにも「reflog」が存在する可能性がありますが、これはプッシュが成功した場合にのみ更新されます。たとえば、SSH を使用すると、正常にプッシュされたが、その後の強制プッシュによって上書きされたコミットを回復できますが、完全に拒否されたコミットは回復できません。)
「git reflog」コマンドを見つけましたが、Git デスクトップ クライアントを使用せずに使用できるかどうかはわかりません。
「git reflog」はGit コマンドラインツールこれらは通常、ほとんどの Git デスクトップ クライアントにバンドルされていますが、実際にはどのアプリにも結び付けられていません。
cd
すでに Git デスクトップ クライアント (Visual Studio) を使用している場合は、Git のコピーもインストールされるため、ソース ディレクトリに移動してgit
そこから実行するだけで十分です。