服务器上的 Git 存储库恢复了我的更改,但具有与本地相同的日志

标签 git ssh server

我有一个非常奇怪的问题,我似乎无法解决,尽管我现在已经搜索了 4 个小时。

基本上,我在服务器上有一个 Git 存储库。我设法通过 SSH 在本地克隆了该存储库。

如果我在本地进行更改,我可以将它们推送到服务器。 但服务器会还原我的更改。

第 1 步:进行本地更改

我在本地添加了一个 test.php 文件。如果我执行 git log,它就会出现。 enter image description here

第 2 步:推送我的更改

我将更改推送到远程存储库。没有错误。 enter image description here

第三步:检查服务器仓库

如果我ssh 到服务器,并执行git status,它应该不会显示任何本地更改。但是,它显示要提交的更改。这些更改实际上完全撤消了我刚刚推送的内容。 在这种情况下,它将删除我刚刚添加的文件。 enter image description here

第四步:查看服务器登录

如果我运行 git log,我会得到与本地存储库完全相同的日志。 enter image description here

我真的不明白发生了什么。我可以推送更改,但它们一到达服务器就被撤消。

任何帮助将不胜感激,因为这让我发疯,因为我找不到遇到过与我相同问题的人。

最佳答案

那是因为在推送时,服务器只更新它的提交历史和索引区域,而不会触及您的工作树。这样,在推送之后,您在服务器上的工作树将保持其先前的状态,而其分支已更新。

通常建议不要将非裸仓库推送到 checkout 分支,因此推送到另一台服务器(例如 GitHub)并从服务器上 pull 可能是一个更好的主意。

如果您确定自己在服务器上做的一切都是正确的,请手动运行 git checkout -f 推送到服务器上的所有内容,以确保其工作树与其索引区域匹配。

关于服务器上的 Git 存储库恢复了我的更改,但具有与本地相同的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58576407/

相关文章:

linux - 压缩时排除选定的子目录

git - 无法使用 Bamboo Remote Agent 克隆存储库

git - 使用 TortoiseHg 克隆一个可读写的 github 存储库

java - InputStream 读取字节数组 - 它会混合消息吗

python - Git merge 意外失败

ruby-on-rails - 如何将旧提交部署到 Heroku

Git 重新标记理智和疯狂的建议 - 第 2 部分

ssh - 查找 ansible ssh 用户

c - C 中带有 poll() 的 UDP 套接字服务器

algorithm - 在配对多人游戏中到达 "pair with opponent"的最佳方法