我的推送操作失败了,因为我的同事向我正在处理的同一个分支提交了一行,而我忘记存储我的,所以我试图恢复我同事的提交并将其复制到我的更改中,这样只有传出的提交会已经存在了,我想。它没有按照我想要的方式工作,所以我尝试重置他的提交,然后我右键单击提交,然后单击重置->删除 --Hard(在 Visual Studio 中),这删除了他和我的所有提交。
我再次提交了我的更改,只是我未能将其推送到服务器。我找到了该git reflog
命令,但我不确定是否可以在不使用 Git 桌面客户端的情况下使用它。
有没有办法使用 SSH 客户端从服务器上找到我未推送的提交?还是我应该重写所有内容?大约有 50-100 行代码丢失了。
解决了:
使用左上角附近的 Visual Studio Git 菜单 -> 然后在命令提示符中打开
git reflog
然后
git cherry-pick <SHA-1>
其中 SHA-1 是分支的负责人(例如 HEAD@{1}),如下面的 user1686 答案中的链接所述。
或者如https://stackoverflow.com/questions/30035998/deleted-branch-unexpectedly-git-in-visual-studio
git reflog
中所述,可以找到最近丢失的提交。git fsck --unreachable
但是,恢复方法需要在以前可见这些提交的存储库上运行。如果提交没有成功推送,那么它根本不会在 Git 服务器上——它唯一存在的地方是你在 VS 中的本地 Git 存储库。
(虽然服务器存储库上也可能有一个“reflog”,但只有在推送成功时才会更新。例如,SSH 可用于恢复已成功推送但被后来的强制推送覆盖的提交 -但不是那些被彻底拒绝的人。)
'git reflog' 来自Git 命令行工具,通常与大多数 Git 桌面客户端捆绑在一起,但实际上并不与任何应用程序绑定。
你已经在使用一个 Git 桌面客户端——Visual Studio——它还安装了一个 Git 的副本,所以它应该足以到
cd
你的源目录并git
从那里运行。