【问题标题】:Git: Insert commit before one of the previous tagsGit:在先前的标签之一之前插入提交
【发布时间】:2016-10-19 13:03:46
【问题描述】:

我的 GitHub 中有一个 Android 项目存储库,用于在我的博客中讲述一些主题。在每个主题之后,我创建一个标签。这是我的仓库:https://github.com/figengungor/Suits

在我的第一个标签中,我创建了一个 RecyclerView,有人要求我展示如何使用我没有实现的 RecyclerView 添加项目点击。

所以我的问题是在这个场景中,我怎样才能在我的第一个标签之前插入一个提交。

我希望提交消息只显示在这个标签中,但提交效果应该发生在倒数第二个标签中。

我怎样才能做到这一点?

【问题讨论】:

  • 你是唯一一个参与这个项目的人吗?你知道改写历史的后果吗?
  • 到目前为止,是的,我是唯一一个从事该项目的人。不,我不知道后果。你能启发我吗?我想这样做的原因是我在最后一个标签中添加了 DataBinding,我不想显示使用 DataBinding 添加项目单击侦听器。我想在我的第一个标签中添加这个点击功能,它不会与直到 DataBinding 标签的东西冲突。
  • 如果你认为这会给我带来麻烦,你建议我在这个场景中应该怎么做?
  • 如果你是唯一的提交者,重写历史通常不是问题:)
  • 这样的话,怎么改写历史呢?

标签: android git github


【解决方案1】:
  • 您可以通过基于特定提交的交互式 rebase 来重写历史记录

  • 这样,您将获得有关提交作为对象的全新历史记录(新的 sha1 哈希)

  • 问题是标签本质上是对象,带有指向提交的指针和一些附加信息

    1. 获取您想要保持不变的最后一次提交的哈希值和您想要插入的哈希值
git rebase -i lastIntacthash
    1. 这将启动您的默认编辑器
    1. 裁剪您想要插入的提交的整行(选择...)
    1. 将其粘贴为第一行(例如,这将是完整提交后的第一行)
    1. 保存文件,剩下的工作由 git 完成
  • 如果您没有太多标签,您可以手动添加它们并删除旧的或参考Can tags be automatically moved after a git filter-branch and rebase?

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 2017-09-09
    • 2011-07-03
    • 2011-06-20
    • 1970-01-01
    • 2015-12-01
    • 2012-08-12
    相关资源
    最近更新 更多