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

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


当前回答

如果您想要删除错误的文件, 您应该做

git 重置 -- s软 < your_ last_ good_commit_hash_ here> 在这里, 如果您做 Git 状态, 您可以在集结区看到文件。 您可以选择错误的文件, 从集结区拿下来 。

喜欢下面。

git 重置错误的File1 错误的File2 错误的File3

您现在可以添加您需要按键的文件,

添加好文件1 好文件2 git 添加好文件1 goodFile2

提交提交它们

git 承诺 -v 或 git 承诺 - am "Message"

推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推,推

git 推进源源主机

但是,如果您不关心已更改的文件, 您可以硬重置到先前的良好承诺, 并将所有文件都推到服务器 。

git reset --hard <your_last_good_commit_hash_here>

git 推进源源主机

如果您已经向服务器发布错误的文件, 您可以使用 -- 强制旗将文件推到服务器并编辑历史 。

git 推推 -- 原力硕士

其他回答

只要使用 git 重置它执行下面的命令 :

git reset --soft HEAD~1

解释 : git 重设做什么, 它基本上是重置到任何您想要返回的承诺, 然后如果它与 -- soft 键合并, 它会返回, 但保留您文件中的更改, 所以您回到刚刚添加文件的阶段, HEAD 是分支的头部, 如果您和 ~ 1 合并( 在此情况下, 您也使用 HEAD+) , 它只会返回一个您想要的...

我为您创建了以下图像中的步骤, 详情更多, 包括所有在真实情况下可能发生的步骤, 并承诺执行代码 :

使用 reflog 查找正确状态

git reflog

安全前的路线

选择正确的 reflog( 以我为例, f3cb6e2) 和类型

git reset --hard f3cb6e2

在那之后 重置总部将重置 重置后,HEADLOGED

最终, 折叠图看起来像下面的图片

谈判最后定本

在我的情况中,我承诺并推向错误的分支, 所以我想要的是把全部的改变都收回来, 这样我就可以把它们投向一个新的正确的分支, 所以我做了这个:

在您承诺和推动的同一分支上, 如果您输入“ gitt status” 键入“ git status” 状态, 您将不会看到任何新事物, 因为您承诺和推动, 现在键入 :

    git reset --soft HEAD~1

这将将您所有的更改( 文件) 重新回到舞台区域, 现在把它们重新回到工作目录( 非阶段) 中, 您只要输入 :

git reset FILE

“ 文件” 是您想要再次承诺的文件 。 现在, FILE 应该在工作目录中, 包含您所做的全部更改 。 现在您可以更改为您想要的分支, 并对该分支进行更改 。 当然, 您承诺的初始分支仍然有所有更改, 但对于我来说, 如果不是您的话, 您可以寻找恢复该分支承诺的方法 。

我想撤销我们共享存储库中最新的五个承诺。 我查了我想回溯到的订正代号 。 然后我输入了下面的内容 。

prompt> git reset --hard 5a7404742c85
HEAD is now at 5a74047 Added one more page to catalogue
prompt> git push origin master --force
Total 0 (delta 0), reused 0 (delta 0)
remote: bb/acl: neoneye is allowed. accepted payload.
To git@bitbucket.org:thecompany/prometheus.git
 + 09a6480...5a74047 master -> master (forced update)
prompt>

键入 git 日志, 并找到最后一次承诺的散列代码, 然后输入 :

git reset <the previous co>