我可以从git仓库中删除整个分支吗?

时间:2017-01-26 14:13:53

标签: git version-control

我不只是在谈论分支指针: - )

假设我已经完全合并了分支,现在我想让它看起来像那个分支从未存在过。在我看来,我应该能够从repo中完全修剪该分支(即删除该分支上的所有提交,因此它永远不会在历史中显示)而不牺牲完整性。有没有办法做到这一点?

是否有可能将剩下的分支推到上游而不推动那个我宁愿忘记?

编辑:我在一个例子中添加了试图说明这个更好的

git checkout master
git commit -m "C1"
git branch b1
git commit -m "C2"
git checkout b1
git commit -m "C3"
git checkout master
git merge -m "C4" b1
git branch -d b1

给出了这个结果

--C1--+----C2----+--C4
       \        /
        +--C3--+

我想要做的是删除C3,但保留C4完全原样,以便历史看起来是线性的。在我看来,无论C3是否存在,C4的sha-1都是相同的,所以我不明白为什么我需要重新选择/樱桃选择呢

3 个答案:

答案 0 :(得分:2)

是的,可以完全删除分支:

git branch -D branchname
git push origin :branchname

-D强制删除分支,即使分支尚未合并。

答案 1 :(得分:0)

您可以使用以下命令执行此操作:

git branch -D branchname.
git reflog expire --expire=now --all
git gc --aggressive --prune=now
git repack -a -d -l

有关每个命令的更多信息,请参阅git文档:https://git-scm.com/docs

答案 2 :(得分:-1)

您尝试过使用:

$git branch -d