【问题标题】:I cannot delete a specific commit from git我无法从 git 中删除特定的提交
【发布时间】:2021-10-21 02:59:44
【问题描述】:

我正在尝试从 git 日志中删除特定的提交。我已经访问了许多问题,发现git rebase -i 是要走的路。 但这不起作用,为什么? 下面是我的屏幕截图,显示我有 3 次提交,我正在尝试摆脱 file1.txt

这是我一直在尝试做的:

git log --oneline
git rebase -i HEAD~2

然后记事本打开, 为了清楚起见,这里是屏幕截图:

然后我添加

drop <commit-hash of file1.txt>
then save and exit 

但似乎没有任何改变!

我应该如何删除特定的提交?

如果那个特定的提交已经被推送到远程仓库,我该怎么办?

【问题讨论】:

  • 你想删除第一个提交?
  • 你必须告诉 git 从file1.txt 之前开始:git rebase -i HEAD~3
  • 如果file1.txt 提交是您历史上的第一个提交,则有一个特殊选项:git rebase -i --root
  • @LeGEC 我确实尝试过git rebase -i HEAD~3,但它告诉致命:上游'HEAD~3'无效。这是什么意思?
  • @LeGEC git rebase -i --root 工作,但让我们假设 file.txt 不是第一次提交。假设它位于中间的某个地方。

标签: git github git-bash


【解决方案1】:

要使用交互式 rebase 删除提交,您必须从该提交的 parent 开始启动 rebase。这样,目标提交就会包含在待办事项列表中。

您没有这样做,因此您的目标提交不在待办事项列表中。您尝试手动添加它,但这是假的。

在您的目标没有父级的特殊情况下,您可以使用 --root 选项。这就是你所处的情况。

最后,请注意 Git 是关于提交的。不是文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-24
    • 2018-03-25
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多