删除未命名的git分支

删除未命名的git分支,git,rebase,cherry-pick,Git,Rebase,Cherry Pick,不知怎的,我最终得到了这样一个项目结构: > git log --graph --oneline --all * a72aed6 (master) feat(data:model:user): modified db service * 099becd feat(data:model:user): added CRUD for user model * 59ac87d refactor(): separating concerns * dfb983f chore(data:api): r

不知怎的,我最终得到了这样一个项目结构:

> git log --graph --oneline --all

* a72aed6 (master) feat(data:model:user): modified db service
* 099becd feat(data:model:user): added CRUD for user model
* 59ac87d refactor(): separating concerns
* dfb983f chore(data:api): removed graphql testing cruft
* aa92817 feat(data:db): setup pg pool connection and query in db/index.ts
* ee03d48 feat(wf): added express
* 184cef0 feat(data:db): added pg
| * 32aedba chore(data:api): removed graphql testing cruft
| * a6825d2 feat(data:db): setup pg pool connection and query in db/index.ts
| * 4a901b1 feat(wf): added express
| * e5753c5 feat(data:db): added pg
|/
* 94426bc (HEAD) feat(qc:test:jest): added test coverage script
* 6126689 feat(build:deploy): added webpack typescript integrations
* 172da85 feat(build:deploy): added webpack-cli
* bab6afa feat(qc): added husky
* c570f33 feat(vcs): added git
我尝试了一切(
reset--hard
cherry pick
rebase-I,drop
,等等)来删除对
32aedba的提交
e5753c5
,在我赶着项目的一部分完成最后期限时,这些提交错误地显示为4次提交的副本:)

我可以执行什么命令来实现以下输出:

> git log --graph --oneline --all

* a72aed6 (master) feat(data:model:user): modified db service
* 099becd feat(data:model:user): added CRUD for user model
* 59ac87d refactor(): separating concerns
* dfb983f chore(data:api): removed graphql testing cruft
* aa92817 feat(data:db): setup pg pool connection and query in db/index.ts
* ee03d48 feat(wf): added express
* 184cef0 feat(data:db): added pg
* 94426bc feat(qc:test:jest): added test coverage script
* 6126689 feat(build:deploy): added webpack typescript integrations
* 172da85 feat(build:deploy): added webpack-cli
* bab6afa feat(qc): added husky
* c570f33 feat(vcs): added git
我尝试的前后示例:

git checkout 32aedba
git rebase -i 94426bc
# `drop` to the above commits

git log --graph --oneline --all
# Returns as above, with HEAD at 94426bc

首先,一个陈旧的分支不会造成伤害,所以我不清楚你的目标。这只是演示吗?如果是,您只能使用

git log --graph --oneline master

但让我们接受这样一个前提:如何消除不必要的提交

您必须找到哪些引用在commit
32aedba

git branch --contains 32aedba
然后使用删除这些分支

git branch -D <branch>
git推送源--删除[branchName]
删除远程分支

尝试将--decoration添加到日志命令中,查看它是否会列出使这些提交保持活动状态的分支。@LasseV.Karlsen感谢您的建议-我已经尝试过了,但在这种情况下没有任何效果。我相信这是因为一个标签而不是一个标签branch@NickBull:
--decoration
应显示可通过标记访问的提交,例如,
*a123456(标记:v1.2)此处提交主题行
@torek您说得对!我像个傻瓜一样从上面的输出中忽略了标记:我不确定,主要是因为我对Git工作流程混乱缺乏经验,但我相信这与上面的情况非常相似——当我删除分支上的标记时,分支消失了。假设这是一个类似的原因,你已经张贴。你是对的,一个陈旧的分支不会造成任何伤害,但是许多陈旧的分支可能会让人困惑@尼克布尔:在Git中,标记不在分支上,而是在提交上。事实上,几乎所有的东西都在提交中,分支名称和标记名称只适用于弱小的人类。:-)在任何情况下,一旦删除了可以查找某些提交的所有名称,就停止查找这些提交。这里的关键概念是可达性。请参阅@torek真棒资源!谢谢:)
git branch -D <branch>
git log --graph --oneline --all --decorate