删除两次提交之间的git提交

Nir*_*mar 9 git github

我在我的项目中添加了一些功能,需要4个git提交,现在业务部门要求不再需要这些功能(超过一个月后).所以我需要从我的repo中删除那些特定的git commit(s),之后现在还有27次提交.

Tim*_*sen 6

因为您正在处理一个已发布的分支,该分支可能正在被除您之外的其他人使用,所以我建议您使用恢复这两个提交git revert。从有问题的分支中输入:

git log
Run Code Online (Sandbox Code Playgroud)

并找到有问题的两个提交的 SHA-1 哈希值。然后使用以下命令恢复它们:

git revert abcd1234..foobar12
Run Code Online (Sandbox Code Playgroud)

其中abcd1234是两个提交中第一个(最旧的)的哈希值,foobar12是两个提交中较新的一个。

使用git revert将添加有效撤消隐藏在分支中的两个提交的提交。这种方法的替代方法是使用变基或过滤分支。但这两种方法都涉及重写分支的历史。这可能会给使用您分支的其他人带来麻烦,因为他们将无法再拉或推。


mri*_*rid 6

有四种方法:

如果出现错误:

git rebase --abort
Run Code Online (Sandbox Code Playgroud)

注意:当然,所有这些更改都是在本地完成的,git push之后您应该将更改应用到远程.如果您的repo不想删除提交("不允许快进",当您想删除已经推送的提交时会发生这种情况),您可以使用git push -f强制推送更改.

注意2:如果在分支上工作而你需要强制推送,你应该绝对避免,git push --force因为这可能会覆盖其他分支(如果你已经对它们进行了更改,即使你当前的结账在另一个分支上).强制推送时,首选指定远程分支:git push --force origin your_branch.

  • 该响应实际上是另一个用户对另一个类似问题的答案的复制和粘贴:/sf/answers/839455081/ (2认同)