我的推送操作失败了,因为我的同事向我正在处理的同一分支提交了一行,而我忘记存储我的代码,所以我尝试还原同事的提交并将其复制到我的更改中,我认为这样就只存在一个传出的提交。它没有按照我想要的方式工作,所以我尝试重置他的提交,我右键单击提交,然后单击 Reset->Delete --Hard(在 Visual Studio 中),这会删除他和我的所有内容。
我再次提交了我的更改,只是未能将其推送到服务器。我找到了该git reflog
命令,但我不确定是否可以在不使用 Git 桌面客户端的情况下使用它。
有没有办法使用 SSH 客户端从服务器找到我未推送的提交?还是我应该重写所有内容?大约 50-100 行代码已丢失。
解决了:
使用左上角附近的 Visual Studio Git 菜单 -> 在命令提示符中打开
git reflog
然后
git cherry-pick <SHA-1>
其中 SHA-1 是分支的头部(例如 HEAD@{1}),如下面的用户 1686 答案中的链接所述。
答案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 桌面客户端捆绑在一起,但实际上并不与任何应用程序绑定。
您已经在使用 Git 桌面客户端 - Visual Studio - 它也安装了 Git 的副本,因此它足以进入cd
您的源目录并git
从那里运行。