如何在没有 'revert' 或 'rebase' 命令的情况下从 master 中删除提交?

How to remove commits from master without 'revert' or 'rebase' commands?

我有一个 master 分支。我想从 master 分支中删除从两周前的上一次提交到现在的提交。

我无法使用 git revert,因为该分支中已有还原,这会导致问题。我正在寻找一种解决方案,将 HEAD 指向先前的提交或 master 中的 SHA1分支并设置 SHA1 为主节点。

I'm looking a solution to point the HEAD to a previous commit and say that is the master.

这就是 reset 所做的,当当前分支是 master:

git reset SHA1

这将重置当前分支,使其指向指定的 SHA1(提交、分支、标记、树结构)。请注意,您的工作树不会更改,因此如果它与 SHA1 的内容不同,则 git diff 将显示已更改的 and/or 未版本控制的文件。如果您希望工作树与 SHA1 的内容匹配,请使用 --hard 标志。

注意,如果你想将这个改变的分支推送到你之前已经推送过的远程,你需要使用 -f 标志和 git push,因为历史已经被重写. 在重写 public 分支的历史记录时,请记住通常的问题。