撤消 git pull,如何将 repos 恢复到旧状态(再次)
Undo git pull, how to bring repos to old state (once again)
请注意,在将问题表示为重复之前,我已经阅读了答案here但是,根据建议的解决方案,我将删除所有未提交的内容变化。
问题:
我使用专用分支开发了新功能。与此同时,master 分支继续由其他人开发。我决定做一个 git pull
以便将我的代码重新设置为新代码。但是,存在冲突:有人改进了远程仓库上的代码。
问题:
- 我的本地存储库中有一些未提交的更改。我怎样才能使回购协议恢复到旧的未提交更改的旧状态?
- 我是否已经永远失去了所有未提交的更改?
所以你有以下情况:
- 您在当地有一家分店
- 您正在这个分支上工作,这意味着您在工作文件夹中有未提交的更改
- 您在本地分支上有提交,但您尚未推送
- 其他人在此分支上进行了提交,他们已推送(这意味着您的本地分支已过时)
- 您做了一个
git pull
尝试将来自上游的提交与本地提交合并,但失败并给您留下了合并冲突
- 您现在有一个工作文件夹,其中包含您尚未提交的更改以及来自失败合并的合并冲突更改
事实是,如果第 5 步最终会触及您在本地更改但尚未提交的文件,则永远不会尝试合并。让我重写一下,因为 git pull
尝试合并,它尝试合并的提交的更改不涉及您未提交更改的文件。
所以你所要做的就是:
- 对您的工作文件夹和存储库进行完整备份,并在副本上进行实验(我不想负责添加更多问题)
执行这条命令:
git merge --abort
这会将您的分支恢复到之前的状态,包括工作文件夹。您在 git pull
之前未提交更改的任何文件都应保持原样,因为无论如何合并都不会涉及它们。
如果在进行了本地修改后变基确实开始了,很可能是您打开了 "autostash" 选项。
否则,变基根本就不会开始。
检查此配置参数的值:
git config --get rebase.autostash
你应该看到 true
您可以运行 git rebase --abort
取消变基。
您应该看到一行:
Applied autostash.
这表示您未暂存的更改已恢复。
请注意,在将问题表示为重复之前,我已经阅读了答案here但是,根据建议的解决方案,我将删除所有未提交的内容变化。
问题:
我使用专用分支开发了新功能。与此同时,master 分支继续由其他人开发。我决定做一个 git pull
以便将我的代码重新设置为新代码。但是,存在冲突:有人改进了远程仓库上的代码。
问题:
- 我的本地存储库中有一些未提交的更改。我怎样才能使回购协议恢复到旧的未提交更改的旧状态?
- 我是否已经永远失去了所有未提交的更改?
所以你有以下情况:
- 您在当地有一家分店
- 您正在这个分支上工作,这意味着您在工作文件夹中有未提交的更改
- 您在本地分支上有提交,但您尚未推送
- 其他人在此分支上进行了提交,他们已推送(这意味着您的本地分支已过时)
- 您做了一个
git pull
尝试将来自上游的提交与本地提交合并,但失败并给您留下了合并冲突 - 您现在有一个工作文件夹,其中包含您尚未提交的更改以及来自失败合并的合并冲突更改
事实是,如果第 5 步最终会触及您在本地更改但尚未提交的文件,则永远不会尝试合并。让我重写一下,因为 git pull
尝试合并,它尝试合并的提交的更改不涉及您未提交更改的文件。
所以你所要做的就是:
- 对您的工作文件夹和存储库进行完整备份,并在副本上进行实验(我不想负责添加更多问题)
执行这条命令:
git merge --abort
这会将您的分支恢复到之前的状态,包括工作文件夹。您在 git pull
之前未提交更改的任何文件都应保持原样,因为无论如何合并都不会涉及它们。
如果在进行了本地修改后变基确实开始了,很可能是您打开了 "autostash" 选项。
否则,变基根本就不会开始。
检查此配置参数的值:
git config --get rebase.autostash
你应该看到 true
您可以运行 git rebase --abort
取消变基。
您应该看到一行:
Applied autostash.
这表示您未暂存的更改已恢复。