如何删除提交及其所有子项?

时间:2016-01-09 21:01:00

标签: git delete-file git-commit

假设我有一个提交,我想删除它,它的所有子节点以及引用它的任何分支和标记。

我该怎么办?

实际上,只有参考文献需要删除,之后

git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now

可以运行。

1 个答案:

答案 0 :(得分:1)

你想要做什么基本上是一个rebase 请记住,如果需要将更改推送到服务器,则所有远程分支都需要

您可以这样做:

  1. 找出哪些分支具有所需的提交:

    # get the list of all the branches with the given commit
    git branch --contains <commit>
    
    # get the list of tags with this commit
    git tag --contains <commit>
    
  2. 循环遍历这些分支并将其重置为先前的提交

    for ref in $(git branch --contains <sha1>); do ... ; done;