我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。

我如何从当地存储库撤销这些承诺?


当前回答

如何使用,重置 -- 软的或重置 -- 硬的?

@Kyralessa的回答:

如果您不确定该使用什么 -- Soft (我用这个公约来记住它 -- 安全性 -- 软性) 。

为什么?

如果您选择 -- 错误地选择 -- 错误地选择, 您将会失去以前没有的更改。 如果您选择 -- 错误地选择 -- 错误地选择 -- 软, 您可以通过应用额外命令而实现同样的结果 -- 硬

git reset HEAD file.html
git checkout -- file.html

完整示例

echo "some changes..." > file.html
git add file.html
git commit -m "wrong commit"

# I need to reset
git reset --hard HEAD~1 (cancel changes)
# OR
git reset --soft HEAD~1 # Back to staging
git reset HEAD file.html # back to working directory
git checkout -- file.html # cancel changes

感谢@Kyralessa。

其他回答

如果您是和SourceTree合作, 这会帮助您 。

在承诺上右键点击, 然后选择“ 重置( 当前分支) / master 到此承诺 ” , 最后选择“ 软” 重置 。

IntelliJIDEA 您可以按 Alt+9 键右键单击承诺列表中的某些标签打开 Git 仓库日志, 然后选择 : “ 将当前分支重置到这里... ” 。

通过下列方式查看日志来查找上次承诺的散列代码 :

git log

然后

git reset <the previous co>

您可以对上一个版本进行 Git 检出 < SHA code> , 然后再对新代码再次承诺 。

撤消上一个任务

在很多情况下,你真的想撤销你代码中的最后一项承诺。例如,因为你想对它进行广泛的重组,甚至完全抛弃它!

在这种情况下,"重置"命令就是你最好的朋友:

$ git reset --soft HEAD~1

以上命令( 重置) 将把您当前的 HEAD 分支倒回指定的修改 。 在以上的例子中, 我们想回到当前修改前的修改中, 有效地取消我们上次的修改 。

注意 -- soft 旗号 : 这样可以确保未撤销修改的更改被保存。 在运行命令后, 您会发现您的工作副本中这些更改是未承诺的本地修改 。

如果您不想保留这些更改, 请使用 -- 硬旗 。 您确定不需要这些更改时, 一定要这样做 。

$ git reset --hard HEAD~1