【问题标题】:git amend added files in the staging area toogit amend 也在暂存区添加了文件
【发布时间】:2015-01-22 14:28:11
【问题描述】:

我更改了很多文件并将它们添加到 Git 暂存区。然后,在提交它们之前,我意识到我必须更改之前提交的提交信息。所以,我做了一个git commit --amend 并更改了提交消息而不通过更改日志。好吧,这也将暂存区域中的文件添加到上一次提交中。

我应该怎么做才能以原始形式进行先前的提交并将我更改的文件返回到暂存区域以便我可以单独提交它们?

不管怎样,我意识到我应该先提交我的更改,然后使用 git rebase -i 更改提交消息历史记录。

【问题讨论】:

  • 您有未分阶段的更改吗?
  • @JosephK.Strauss 不,我没有。
  • 你在某处还有上一次提交的提交 ID 吗?在这种情况下,您可以 checkout
  • @opatut:这应该很容易从 reflog 中找出来。

标签: git git-commit git-amend


【解决方案1】:

您可以使用

找到您之前提交的之前状态的 SHA1
git reflog

使用此哈希,您可以使用以下方法将当前分支恢复到之前的状态

git reset --soft <SHA1>

在此之后,您可以存储您的更改,然后执行git commit --amend 更改提交消息。

【讨论】:

  • 谢谢 :) 总有一天我会坐下来抽出几天时间阅读有关 git 的所有内容。总有一天。
【解决方案2】:

根据 reflog 中提交 ID 的值,执行以下操作。

git reflog -5 #I assume this will be good enough; increase the value as needed
git reset --hard <commit-with-bad-message>
git commit --amend -m '<New message>'
git read-tree --reset -u <commit-that-had-extra-files>

你现在应该在你以前想去的地方。继续你的工作。

【讨论】:

    猜你喜欢
    • 2017-09-23
    • 2012-06-28
    • 2011-07-22
    • 2017-01-21
    • 1970-01-01
    • 2017-11-23
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多