我可以在 SVN/GIT 存储库中看到未成功推送的文件吗?

Can I see the unsuccessfully pushed files on SVN/GIT repository?

我一直在编写代码(也想知道 SVN 和 Git),最后一次推送到远程仓库,由于冲突而失败(我的本地仓库没有更新)。然后不小心,项目(更新代码)已从 PC 中删除(无法恢复)。

我是否有可能在远程回购上看到该文件(代码),以便我可以恢复我的更改?

我不是 SVN 内部专家,所以当我们得到长答案时,我只能在这里代表 Git,但简短的答案是否定的,您无法从服务器获取未推送的文件。

对于 Git,长答案是:可能,但可能不会,要找出答案,您需要直接登录服务器,这样您就可以戳在存储库内部。 这里的基本问题是:

  • Git 根本不会推送 files。 Git 推动 提交 。提交要么已经到达服务器,要么没有。

  • 一旦提交到达服务器,由服务器决定接受还是拒绝提交,但这里的细节很重要一点点。你说:

    last Push to remote repo, has been unsuccessful

    "has been unsuccessful"是什么意思?明明推送失败了,但是怎么失败了?连接从未建立过吗?连接是否已建立,然后在所有提交的传输成功之前断开?或者,提交的传输是否全部成功,但随后服务器向您宣布,出于某种原因,它不喜欢您的提交并拒绝合并它们?

如果您的提交确实完好无损地到达了服务器,但服务器拒绝接受它们,那么我们需要了解有关服务器的更多详细信息:安装了哪个版本的 Git?它是如何配置的(Git,特别是这个存储库)?多久前失败并通过了垃圾收集 运行?

一般来说,任何基于提交的系统的设计是这样的:提交是原子的。它要么成功,在这种情况下 all 文件被更新/所有数据被存储,要么失败,在这种情况下 no 文件被更新/没有数据已存储。是否以及何时可以检索故意存储的内容(但可能已放入临时区域,例如事务日志)超出设计参数。

出于大多数实际目的,答案仍然是否定的:没有添加到存储库的提交根本无法获得。