【问题标题】:Changes in local file lost due to it synching with out of date remote git repository由于与过时的远程 git 存储库同步,本地文件的更改丢失
【发布时间】:2019-07-14 11:38:27
【问题描述】:

我尝试通过以下命令将提交推送到我的 gitlab 存储库(我将在执行过程中描述输出):
git checkout origin 没有名为 origin 的分支
git checkout -b origin
git status
git add README.md
git add src/example.ipynb
git add src/.ipynb_checkpoints/
git commit -m notebook update
git push origin master 这就是我意识到我可能处于超然状态并切换到主人的地方
@987654329 @
git status 仍未显示更改
git log -1
git checkout master
git reset --hard 44263cc6fd2bd60be54da344a6d344eb3c42a03a
git push origin master

当我注意到我的本地笔记本文件恢复到旧版本时,我尝试通过执行以下操作恢复上次发布的提交
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --all
git revert 407302e

然后我运行 git revert 得到以下错误:

error: your local changes would be overwritten by revert.
hint: commit your changes or stash them to proceed.
fatal: revert failed

所以您可以看到一系列错误的决定让我来到这里,我该如何恢复我的文件中的更改?谢谢

【问题讨论】:

  • 作为旁注,虽然你在技术上可以命名一个分支origin,但我担心这只会导致潜在的错误和混乱,因为在 git 中非常常见的用法world 将此名称用于 repo 的源远程。如果不是你创建了这个 repo,很可能有人会在未来的某个时候,这种异想天开的命名可能会将他们推入致命的“假设陷阱”。
  • 您要恢复的更改可能仍在您创建的名为origin 的分支中。试试git show origin,它应该会显示您所做的更改。如果是这样,git checkout origin 将带您回到可以查看更改的地方。那我建议你放弃这个沙箱,把修改过的文件复制到一个新的沙箱里,你可以把它们提交到master,这可能就是你想要的地方。

标签: git gitlab git-commit git-push git-revert


【解决方案1】:

部分感谢GitKraken,我解决了这个问题。尽管由于合并冲突仍然无法恢复提交,但它仍然允许我查看新文件和旧文件之间的差异,我很确定这也可以通过命令实现,但对于 git 来说需要做很多工作像我这样的菜鸟。

【讨论】:

    猜你喜欢
    • 2011-09-16
    • 1970-01-01
    • 2014-10-19
    • 2014-06-13
    • 2018-11-30
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多