修复Git中混乱的提交历史

修复Git中混乱的提交历史,git,github,version-control,Git,Github,Version Control,我做了一些更改,然后提交并在GitHub上推送它们 然而,在第二次提交时,我意识到我不需要在第一次提交时推送的一些代码。我删除了它并再次推送它 但是现在,提交历史非常混乱(一次提交会在文件中添加一些代码,下一次提交会删除它) 如果我只是将它挤压在一起(它会忽略添加然后删除的代码),我是否能够修复这个问题 如果我将其重置为原始状态并再次提交我的最终更改,那么一旦我推送分支,这将如何反映在GitHub上 是的,您应该能够通过交互式重新基址将其压扁(请参阅) 无论是执行此操作还是重置为原始状态,然后

我做了一些更改,然后提交并在GitHub上推送它们

然而,在第二次提交时,我意识到我不需要在第一次提交时推送的一些代码。我删除了它并再次推送它

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

  • 如果我只是将它挤压在一起(它会忽略添加然后删除的代码),我是否能够修复这个问题
  • 如果我将其重置为原始状态并再次提交我的最终更改,那么一旦我推送分支,这将如何反映在GitHub上

是的,您应该能够通过交互式重新基址将其压扁(请参阅)


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

我的第二个问题是,提交历史会是什么样子?我知道,如果我选择恢复到旧版本,它会引入“恢复提交”。如果我按你提到的两种方法中的任何一种去做,会不会发生类似的事情?如果是这样的话,我误解了。我对恢复的理解只是检查一个旧的提交并从那里开始工作。这可能会创建孤立/悬空提交,但这些提交不会出现在您的提交历史记录中,这使得它相当干净。