【问题标题】:Git - Removing multiple previous commits from both local and remote repoGit - 从本地和远程仓库中删除多个先前的提交
【发布时间】:2017-09-30 03:10:09
【问题描述】:

以前很可能有人问过这个问题,但我让自己很困惑,试图找到解决方案,我认为最好只发布我正在尝试解决的具体问题。

我想完全删除被划掉的提交(参见屏幕截图),而其他人保持不变。如您所见,这些提交并不总是相互跟随。我已经将所有这些提交推送到远程,所以我也需要这个来反映。可以这样做吗?

我对使用 Git 比较陌生,所以任何建议都会很棒。谢谢。

Local repo commits - SourceTree screen grab

【问题讨论】:

    标签: git github bitbucket atlassian-sourcetree


    【解决方案1】:

    如果您已经推送了这些提交,则不应将它们从历史记录中删除。这样做会在其他人拉取您的更改时引起问题。

    相反,您可以使用revert 命令创建一个新的提交并从之前的提交中删除更改。当你将这个提交推送到远程仓库时,它与删除提交的效果相同,但当其他人从该仓库拉取时不会引起问题。

    要删除图像中被划掉的最新提交,请输入以下命令:

    git revert 1e3e620
    

    对您想要恢复的任何其他提交重复此操作,然后将所有这些提交推送到远程存储库。

    【讨论】:

    • 还没有人从远程拉出,所以现在使用 rebase 会是更好的选择吗?
    • 执行 rebase 会导致更清晰的历史记录 - 您不会看到原始提交或还原提交。在变基后推送到远程存储库时,您需要包含 --force 参数。
    • 考虑到没有其他人从 repo 中撤出,那么我现在将使用 rebase。但会记住你的解决方案。感谢您的帮助:)
    【解决方案2】:

    使用git rebase -i 删除提交,然后使用--force 推送到远程。 (并处理那些已经从遥控器中拉出来的心烦意乱的同事......)

    【讨论】:

    • 我知道一个事实,没有人从远程拉出。那么这种方法会是最好的选择吗?
    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2013-08-05
    • 2013-03-26
    • 2013-11-25
    • 2015-11-05
    • 2019-06-22
    相关资源
    最近更新 更多