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

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


当前回答

在 SourceTree ( GitHub 的 GUI) 上, 您可以右键单击承诺并做一个“ 反向提交 ” 。 这将取消您的更改 。

在终点站上:

可选择使用:

git revert

或者:

git reset --soft HEAD^ # Use --soft if you want to keep your changes.
git reset --hard HEAD^ # Use --hard if you don't care about keeping your changes.

其他回答

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

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 rebase - i 来做这份工作,因为一个不错的名单会出现在我可以选择摆脱承诺的地方。它可能不像这里其他答案那样直接,但它只是感觉是正确的。

选择要列出多少个承诺, 然后这样引用( 加入最后 3 个)

git rebase -i HEAD~3

样本列表

pick aa28ba7 Sanity check for RtmpSrv port
pick c26c541 RtmpSrv version option
pick 58d6909 Better URL decoding support

然后 Git 将删除任何您删除的线条 。

作为以下步骤。

步骤1

Hit git 日志

从日志列表中找到最后的硬化散列代码, 然后输入 :

步骤2

git reset <hash code>

git diff + git 应用程序是迄今为止我团队的最好选择, 清洁和非常容易, 不仅对最后一次任务来说

通常情况下, 您想要撤销一项承诺, 因为您犯了一个错误, 您想要修正它, 基本上就是 OP 提问时所做的。 真的, 您真的想要重做一次承诺 。

这里的大多数答案都集中在命令行上。 虽然命令行是使用Git的最佳方法, 当你对它感到舒服的时候, 它可能与来自其他版本控制系统到 Git 的人有点不同。

使用 GUI 如何操作。 如果您安装了 Git, 您已经拥有了所有您需要遵守的指示 。

注意: 我在此假设您在推动前意识到承诺是错误的。 如果您不知道推力意味着什么, 那么您可能还没有被推动。 继续执行指令。 如果您推动了错误承诺, 最危险的方法就是跟踪错误承诺, 并做出新的修正, 而在版本控制系统中, 您会这样做, 不允许您重写历史 。

使用图形用户界面来修正你最近的过错:

导航到命令行的仓库, 并用 git gui 选择“ 修正最后一项承诺 ” 启动 GUI 。 您将会看到您上次的承诺信件、 您所准备的文件 以及您没有的文件 。 现在更改了您想要它们如何查看和单击 COD 。