gpt4 book ai didi

git - 修改旧提交

转载 作者:太空狗 更新时间:2023-10-29 13:53:37 25 4
gpt4 key购买 nike

我有如下的提交历史:

* 8cd26ba 2013-06-26 | history server-side (HEAD, noXHR)
* bffd858 2013-06-25 | popups and modals
* d95c5f4 2013-06-21 | Map update for new interaction
...

当我已经提交“8cd26ba”时,我发现了模式机制中的一个错误并想修复它。我试图修改'bffd858'(因为修复与它相关)因为它described here .我执行了以下步骤:

  1. 输入

    $ git rebase -i bffd858
  2. git 向我展示(在 nano 中)

    pick 6fa566b history server-side
    # Rebase bffd858..6fa566b onto bffd858
    #
    # Commands:
    # p, pick = use commit
    # r, reword = use commit, but edit the commit message
    # e, edit = use commit, but stop for amending
    # s, squash = use commit, but meld into previous commit
    # f, fixup = like "squash", but discard this commit's log message
    # x, exec = run command (the rest of the line) using shell
    #
    # If you remove a line here THAT COMMIT WILL BE LOST.
    # However, if you remove everything, the rebase will be aborted.
    #
  3. 我已将“选择”替换为“编辑”

  4. git 说我:

    Stopped at 8cd26ba... history server-side
    You can amend the commit now, with

    git commit --amend

    Once you are satisfied with your changes, run

    git rebase --continue
  5. 我已经应用了错误修复并输入了

    $ git commit -a --amend
  6. 输入

    git rebase --continue
  7. 然后我在“8cd26ba”(最后 提交)中找到了我的错误修复!

我做错了什么?

最佳答案

你的错误是,当你做一个 rebase 时,你想给你想要修改的最早提交的父提交的 id。在你的例子中,你想修改 bffd858,它的父级是 d95c5f4 也被称为 bffd858^bffd858~1 (我更喜欢最后一种语法,因为它适用于将 ^ 解释为特殊字符的 shell)。

你应该这样做:

$ git rebase --interactive bffd858~1

并更改文件,使其显示为:

pick bffd858 popups and modals
fixup 6fa566b history server-side
# Rebase bffd858..6fa566b onto bffd858
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#

然后保存并关闭文件。

通常应用错误修复和更正历史记录的最简单方法是:

  1. 在提交修复时使用 git commit --fixup=bffd858
  2. 使用 git rebase --interactive --autosquash bffd858~1 rebase ,
  3. 保存打开的文件,然后等待 rebase 完成。

然后您的原始提交将使用修复程序进行修补。

在您的情况下,您只对一次提交进行了 rebase ,然后进行了修改。 rebase 部分,只是将历史倒退到您提交修复后的那个点(即什么都不做)。

关于git - 修改旧提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17338792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com