两次提交之前,我不小心将一张免费的图片换成了一张受法律保护的图片(我不被允许发布该图片)。我还没有推送到github。如何撤消对图片所做的这些更改,使其不会显示在提交历史记录中?就好像这张照片从来没有变过一样。
发布于 2012-08-17 02:51:47
使用git rebase -i HEAD~2。当系统提示您要做什么时,对于需要更改的提交,请将"pick“替换为"edit”。这将允许您编辑指定的提交,这意味着编辑整个提交,而不仅仅是消息。
(或者,如果根本不需要该提交,只需删除包含错误提交的行。rebase将完成,并使其不会发生提交。在这种情况下,不需要阅读本文的其余部分。)
当你启动rebase (通过保存并退出你正在使用的任何编辑器)时,你会得到一个类似下面这样的提示:
Stopeed at 98ad8ac... Add an image I really oughtn't add.
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue所以,就这么做吧!对提交进行需要的更改(即删除非空闲映像,放回空闲映像),然后运行git commit --amend。这将用新的提交替换您的错误提交。
(另一种方法是:在此时运行git reset HEAD^。这将使它看起来就像没有发生提交一样,但提交的所有更改都将在您的工作副本中,因此您可以根据需要暂存/回退/任何更改。然后像往常一样运行git commit。)
然后运行git rebase --continue,它会在第一次提交的基础上应用你的第二次提交,并且你的历史记录将只包含正确的修复,而不是无用的修复。
发布于 2012-08-17 02:33:28
git commit --amend是你的朋友。
如果您需要在历史中进行进一步的更改,那么可以使用git rebase --interactive。
发布于 2012-08-17 02:53:55
你可以做git revert <commit>,但它仍然会在历史中显示出来。
如果它没有被推送,那么你可以放弃git reset --hard <commit>对两次提交所做的更改。
https://stackoverflow.com/questions/11993308
复制相似问题