GitLab Server 在哪里可以找到硬删除的未推送提交

GitLab Server 在哪里可以找到硬删除的未推送提交

我的推送操作失败了,因为我的同事向我正在处理的同一分支提交了一行,而我忘记存储我的代码,所以我尝试还原同事的提交并将其复制到我的更改中,我认为这样就只存在一个传出的提交。它没有按照我想要的方式工作,所以我尝试重置他的提交,我右键单击提交,然后单击 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 refloggit fsck --unreachablehttps://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从那里运行。

相关内容