【问题标题】:I want to undo a commit and keep the changes我想撤消提交并保留更改
【发布时间】:2019-04-28 13:48:02
【问题描述】:

抱歉 - 我无法与该问题的现有答案以及大多数问题相关联,因为所问的内容和答案所完成的内容是模棱两可的。 我做到了:

  1. git 克隆 ....
  2. 使用我最喜欢的编辑器编辑文件“文件”
  3. git 添加文件
  4. git 提交文件

我想回到2.之后和3之前的状态。

如果你的答案包含任何 git 命令的参数,请不要忘记解释这些参数(例如 HEAD~32)。

我的问题似乎是“重复问题”。在搜索“undo git commit”时,我没有看到这个现有的问题。因此,这个问题可能也不会显示给搜索我的搜索短语的其他人(当我需要再次查找答案时,也不会显示给我)。 现有问题中的答案也没有解释 HEAD^ 是什么(这里的当前答案也没有)。

【问题讨论】:

  • 我认为您可能误解了重复项在这里的工作方式。只要您的问题没有被删除,它仍会出现在搜索引擎上供搜索您标题的人使用,因此对于遇到此问题的任何人来说,它仍然是“路标”。
  • 至于HEAD 参数的详细信息,这确实是一个切题的问题,最好作为自己的问题。想知道这一点的人不一定会搜索您的问题。

标签: git


【解决方案1】:

只是回到上次提交之前的状态,但保留工作副本中的更改:

git reset @~

@~HEAD~1 的简写(即上一次提交,数字1 表示“后退1 步”)。 Git 将切换到该提交,并且更改将在git status 中显示为“未暂存提交”。

【讨论】:

  • 为什么是 HEAD~1 而不是 HEAD~32?
  • 因为你提交了一次而不是 32 次。
  • “刚刚重置到上一次提交”——这句话已经很混乱了。我想回到我指定的状态
  • @FrankPuck:我重新表述了第一句话。
【解决方案2】:

已经建议的命令就是您要查找的命令:

git reset HEAD~1

您的 git 项目本质上是一堆更改。 HEAD 是该堆栈的顶部“单元”。当您提交更改时,您会在该堆栈顶部添加一个新单元格。 上述命令在 git add 命令之前将这些文件取消暂存为已修改的文件。或者,换句话说,删除您堆叠的最后一个单元格。此外,数字 - ~1 - 确定要删除多少“单元”或提交。 如果有不清楚的地方,我会很乐意回答。 另外,这里有一篇关于git reset 的有用信息。

【讨论】:

  • @FrankPuck - 如果我能进一步解释,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2019-11-15
  • 2013-01-15
  • 2013-06-10
  • 2020-12-11
  • 2017-11-01
  • 2016-10-09
  • 2014-02-02
  • 2021-09-30
相关资源
最近更新 更多