我有一个非常奇怪的问题,我似乎无法解决,尽管我现在已经搜索了 4 个小时。
基本上,我在服务器上有一个 Git 存储库。我设法通过 SSH 在本地克隆了该存储库。
如果我在本地进行更改,我可以将它们推送到服务器。 但服务器会还原我的更改。
第 1 步:进行本地更改
我在本地添加了一个 test.php
文件。如果我执行 git log
,它就会出现。
第 2 步:推送我的更改
第三步:检查服务器仓库
如果我ssh
到服务器,并执行git status
,它应该不会显示任何本地更改。但是,它显示要提交的更改。这些更改实际上完全撤消了我刚刚推送的内容。
在这种情况下,它将删除我刚刚添加的文件。
第四步:查看服务器登录
如果我运行 git log
,我会得到与本地存储库完全相同的日志。
我真的不明白发生了什么。我可以推送更改,但它们一到达服务器就被撤消。
任何帮助将不胜感激,因为这让我发疯,因为我找不到遇到过与我相同问题的人。
最佳答案
那是因为在推送时,服务器只更新它的提交历史和索引区域,而不会触及您的工作树。这样,在推送之后,您在服务器上的工作树将保持其先前的状态,而其分支已更新。
通常建议不要将非裸仓库推送到 checkout 分支,因此推送到另一台服务器(例如 GitHub)并从服务器上 pull 可能是一个更好的主意。
如果您确定自己在服务器上做的一切都是正确的,请手动运行 git checkout -f
推送到服务器上的所有内容,以确保其工作树与其索引区域匹配。
关于服务器上的 Git 存储库恢复了我的更改,但具有与本地相同的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58576407/