&引用;git重置——硬头“;在主分支中删除了本地分支中的未老化更改
我在主分支中进行了一些本地更改,并将其合并到本地分支中&引用;git重置——硬头“;在主分支中删除了本地分支中的未老化更改,git,github,version-control,Git,Github,Version Control,我在主分支中进行了一些本地更改,并将其合并到本地分支中 local>git merge master 在这之后,我想要一个干净的主存储库,所以我去了主存储库并对git进行了重置 local>git checkout master master> git reset --hard HEAD 然后我回到了当地分行,注意到我在当地的所有未过时的更改都丢失了。为什么会这样?当您通过git checkout master从local切换到master时,工作目录中的更改保持原样。除了
local>git merge master
在这之后,我想要一个干净的主存储库,所以我去了主存储库并对git进行了重置
local>git checkout master
master> git reset --hard HEAD
然后我回到了当地分行,注意到我在当地的所有未过时的更改都丢失了。为什么会这样?当您通过
git checkout master
从local
切换到master
时,工作目录中的更改保持原样。除了现在你在master
分支上。当你这么做的时候:
git reset --hard HEAD
从master
分支,您可以从master
分支将工作目录和stage重置为HEAD
commit。因此,我希望您的工作目录更改丢失
不过,有一种可能恢复您的工作目录。如果您使用的是像IntelliJ这样的优秀IDE,那么它可能会在Git重置文件之前记住您修改的文件的状态。要测试这一点,只需查看有问题的文件并尝试执行撤消操作。如果幸运的话,你可以通过这种方式找回旧的零钱
作为将来的参考,如果您在local
上有工作更改,并且希望以这种方式切换分支,那么您可以尝试执行以下操作之一
- 使用
隐藏您的作品git stash
- 在
上进行临时提交本地
git stash apply
再次应用这些更改。在临时提交的情况下,当您稍后返回到local
时,您可以完成您的工作,然后通过以下方式修改临时提交:
git commit --amend
请注意,git stash本身在hood下做出2次(有时是三次)提交,以持久化给定分支上的工作目录和阶段。git中有三个阶段
git stash
显示更改阶段的一种更直观的辅助方式是通过
git-gui
不同的分支没有单独的“未分级更改”。只有一组未分级的更改,只有一组分级的更改。如果使用未分级的更改切换分支,则未分级的更改将保持未分级