我很困惑。我想返回到我在"git log“中标识的前一个提交。
但是当我做"git结账“的时候,我没有得到提交。什么都没变。它告诉我我处于分离磁头模式,但我想要的文件不在那里。
我到底做错了什么?
MrB
发布于 2011-02-15 21:31:28
手册页中的git reset --hard <commit>:
将工作树和索引与要切换到的树的索引进行匹配。之后对工作树中跟踪的文件所做的任何更改都将丢失。
git checkout用于将您的工作目录切换到不同的分支或提交。这不会将HEAD移动到那里。
发布于 2012-10-24 01:03:15
不要git重置-hard它是永久的!
请使用
git stash -u 取而代之!如果你无意中把一件作品放到了那里,你仍然可以把它拿回来。这永远不会被推送到你的遥控器上,除非你选择这样做,将它做一个分支并将它向上推送。
而且,您走在了正确的道路上,您可以使用git checkout来完成同样的事情。语法是
git checkout HEAD -- . 但是它和git reset --hard有同样的问题。坚持使用stash,你将来就不会掉头发了。
较长的应答
上述解决方案将恢复您的所有更改。但是,您问到如何消除其中的一些更改。为了完整起见,我将添加以下内容。
要做到这一点,您可以
git add file1 file2 file3
git stash save --patch现在,系统将提示您输入要使其消失的确切内容...细化到任何粒度级别。因此,如果您选择这样做,您可以安全地“拒绝”对单个文件所做的少量更改。
发布于 2021-11-30 09:30:20
在git中,首先获得提交标识符,然后使用该标识符可以恢复提交。
git reset --hard 50c0369
git push -f https://stackoverflow.com/questions/5004237
复制相似问题