当前位置:  开发笔记 > 运维 > 正文

修改git中过去提交中的单个文件

如何解决《修改git中过去提交中的单个文件》经验,为你挑选了2个好方法。

我想在过去的提交中修复一个文件.这可能会影响所有提升提交.

有一个简单的方法吗?你能给我一个如何做到这一点的指导方针吗?

很多次,当我提交两次时,我发现我在第一次提交时遇到错误,我希望修复错误而不必'git reset'我最后一次提交.

为了澄清.我想更改实际的提交,也就是说,我希望更改过去提交的内容.我想改变历史!



1> jpalecek..:

如果你只想修改倒数第二次提交(例如,不久前,特别是在很多分支和合并之前),那么我使用这个过程:

    git checkout -b tmp bad-commit

    修复文件

    git commit --amend

    git rebase tmp master

如果您之间有合并,您可能想尝试rebase -i -p,但结果可能会有所不同.


这会改变你的历史.在rebase之后,可以通过正确的名称从分支的提示访问提交.当您推送时,错误提交将不会发送到服务器.

2> VonC..:

看起来像:

a filter-branch(可以做你想要的复杂命令)

并按照jpalecek的描述进行修改和修改.您将在此其他相关问题中找到稍微更详细的相同解决方案.

您可以在此注释中找到rebase interactive的示例:然后您可以避开临时分支,但同样,它更复杂.

我还经常修改以清理开发历史,以便更改正确并正确分组.

一个简单的例子:
我将函数重命名foobar并使用注释"将foo重命名为bar"进行提交.
然后我继续下一个功能或修复,并提交,继续下一个.
中途,我发现我错过了一个实例foo!
我提交我的工作(或使用git-stash),修复丢失的'foo'并提交,然后使用git-rebase --interactive将所有foo修复合并到一个干净的提交中.
如果我没有使用git-stash,那么git-commit --amend当我最终完成正在进行的功能时,我将使用(另一种形式的变基).

当我的补丁被推送审查时,所有的部分都是正确的,并讲述一个连贯的故事.有时我git-rebase --interactive只是使用相邻的时间分隔的变化来影响相同的位,因此变化是在上下文中.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有