【问题标题】:How to remove first commit of a specific branch?如何删除特定分支的第一次提交?
【发布时间】:2021-11-04 15:28:07
【问题描述】:

这就是我想要实现的。
如何删除远程存储库中功能的首次提交? 提前谢谢你。

【问题讨论】:

  • 为什么?您要解决的实际问题是什么?通常,尝试在任何类型的变更跟踪系统中更改历史记录都与该系统的观点背道而驰。
  • @David 首先,feaure 分支从开发中创建,并且只有 2 次提交。我尝试从开发创建实验分支,我只提交添加文本文件,然后我想将特性分支从开发重新定位到这个实验分支,但是出了点问题我犯了一些错误,特性分支被合并到实验分支中。之后我尝试删除实验分支,所以现在结果就像图片中一样。所以commit1是被删除的实验分支的提交。
  • 注意:你用红色 X 标记的提交 notfeature 上的 first 提交。这是feature 上的倒数第三次提交。 feature 上的 first 提交是 develop 上的第一个提交。这很重要,原因有很多;最重要的是你不能真正删除 any 提交,而你要做的是 copy last two 在@上的提交987654327@ 用于不使用倒数第三个提交的新提交和改进提交。你必须像这样“向后工作”,因为 Git 是向后工作的。
  • 当您执行这种“复制到新的和改进的”技巧时,最后一步是移动 分支名称,以便它引用上次复制的提交。这不会移动任何 other 分支名称,因此其他名称上的所有提交仍然在其他名称上,可能包括复制到新的和改进的提交。
  • 幸运的是,对于您的特殊情况,您不想再看到的提交只能从 feature 访问,因此它仍然可以从所有之前到达它的非功能名称......变得无关紧要:没有这样的名称。但如果不是这种情况(总有一天你会遇到的),那就很重要了。

标签: git backlog


【解决方案1】:

假设你是唯一一个在这个分支上工作的人,你可以用交互式 rebase 重写历史。

我建议您先记录一下有关交互式 rebase 的内容。

git checkout feature
git rebase -i HEAD~3 # Rebase the last 3 commits

在编辑器打开中,为commit1设置drop操作。保存。

然后使用git push --force-with-lease 推送(强制)更改。

【讨论】:

    猜你喜欢
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 2016-08-28
    • 2021-12-24
    • 2022-01-13
    相关资源
    最近更新 更多