【问题标题】:Fixing messy commit history in Git修复 Git 中混乱的提交历史
【发布时间】:2019-05-03 22:48:09
【问题描述】:

我做了一些更改,然后提交并推送到 GitHub。

但是,在我的第二次提交中,我意识到我不需要在第一次提交中推送的某些代码。我删了又推了。

但是现在,提交历史非常混乱(一次提交在文件中添加了一些代码,下一次提交将其删除)。

  • 如果我把它压缩在一起,我能解决这个问题吗(它会忽略添加然后删除的代码)吗?
  • 如果我将其重置回原始状态并再次提交我的最终更改,那么一旦我推送分支,这将如何准确地反映在 GitHub 上?

【问题讨论】:

    标签: git github version-control


    【解决方案1】:

    是的,您应该可以使用交互式 rebase 将其压缩(参见 https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History

    无论您是这样做还是重置为原始状态,然后添加仅包含最终更改的提交,要在 GitHub 上获取此状态,您都需要强制推送,因为远程存储库的历史记录与您的不同。如果您正在与其他人协作,您可能需要使用 --force-with-lease 选项来确保自您上次推送以来没有人推送过。强制推送后,远程分支应该与您的本地副本相同。

    【讨论】:

    • 第二个问题,我的意思是提交历史会是什么样子呢?我知道如果我选择恢复到旧版本,它会引入“恢复提交”。如果我通过您提到的两种方式中的任何一种,会发生类似的情况吗?
    • 那样的话,我理解错了。我对恢复的解释只是检查一个较旧的提交并从那里开始工作。这可能会创建孤立/悬空提交,但这些不会出现在您的提交历史记录中,使其相当干净。
    猜你喜欢
    • 1970-01-01
    • 2011-01-19
    • 2013-01-23
    • 1970-01-01
    • 2020-10-16
    • 2015-09-02
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多