如何在git中将提交移至登台区域?


143

如果您要将提交移至登台区域(即取消提交并将其中的所有更改都移到登台区域(有效地将分支置于提交之前的状态),则将其提交)你怎么做呢?还是您不能做的事情?

我所知道的最接近的方法是将在提交中更改的所有文件复制到其他位置,将分支重置为提交,然后再尝试将其移到暂存区,然后将所有将文件复制回存储库,然后将其添加到暂存区。它可以工作,但这并不是一个很好的解决方案。我想做的就是撤销提交并将其更改移到暂存区域。能做到吗 如果是这样,怎么办?

Answers:


267
git reset --soft HEAD^

这会将您的索引重置为HEAD^(上一次提交),但是将您的更改保留在登台区域中。

还有一些便利的图表git-reset文档

如果您使用的是Windows,则可能需要使用以下格式:

git reset --soft HEAD~1

18
如果此操作无效,请尝试git reset --soft HEAD~1执行相同的操作,但也可以在Windows上使用。
罗曼·斯塔科夫

9
为了明确起见,代字号和整数在git版本中的含义不同。HEAD〜1始终跟在提交的第一个父级之后,如果它是具有多个父级的合并提交,则可能不是您想要的。对于Windows cmd shell,您只需要用另一个替换符号来替换替换符号,例如“ git reset --soft HEAD ^^”以返回到“ HEAD ^”。这纯粹是Windows cmd shell的产物,因此,如果在Windows上使用git GUI,则不必这样做。在schacon.github.io/git/git-rev-parse#_specifying_revisions中解释了Tilde和carot
6

我为“方便图”添加了一个链接。您能否快速检查它是否指向您想要的部分?谢谢
Neuron

5

一种简单的方法

  1. 提交文件到暂存区

    git reset --soft HEAD^1

  2. 升级到UnStage:(使用“ git reset HEAD ...” 取消升级

    git reset HEAD git commands.txt or git reset HEAD *ds.txt

在这里, *->所有文件都以ds.txt结尾,以取消登台。

为了清楚起见,请参考以下图片:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.