首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >git -撤消对单个文件的更改,而不显示在历史记录中

git -撤消对单个文件的更改,而不显示在历史记录中
EN

Stack Overflow用户
提问于 2012-08-17 02:32:05
回答 3查看 142关注 0票数 2

两次提交之前,我不小心将一张免费的图片换成了一张受法律保护的图片(我不被允许发布该图片)。我还没有推送到github。如何撤消对图片所做的这些更改,使其不会显示在提交历史记录中?就好像这张照片从来没有变过一样。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-17 02:51:47

使用git rebase -i HEAD~2。当系统提示您要做什么时,对于需要更改的提交,请将"pick“替换为"edit”。这将允许您编辑指定的提交,这意味着编辑整个提交,而不仅仅是消息。

(或者,如果根本不需要该提交,只需删除包含错误提交的行。rebase将完成,并使其不会发生提交。在这种情况下,不需要阅读本文的其余部分。)

当你启动rebase (通过保存并退出你正在使用的任何编辑器)时,你会得到一个类似下面这样的提示:

代码语言:javascript
复制
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,它会在第一次提交的基础上应用你的第二次提交,并且你的历史记录将只包含正确的修复,而不是无用的修复。

票数 5
EN

Stack Overflow用户

发布于 2012-08-17 02:33:28

git commit --amend是你的朋友。

如果您需要在历史中进行进一步的更改,那么可以使用git rebase --interactive

票数 1
EN

Stack Overflow用户

发布于 2012-08-17 02:53:55

你可以做git revert <commit>,但它仍然会在历史中显示出来。

如果它没有被推送,那么你可以放弃git reset --hard <commit>对两次提交所做的更改。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11993308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档