Удаление неназванной git ветки - PullRequest
0 голосов
/ 24 февраля 2020

Каким-то образом я получил такую ​​структуру проекта:

> 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, et c), чтобы удалить коммиты e5753c5 до 32aedba, которые по ошибке появились как дубликаты 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 checkout 32aedba
git reset --hard HEAD~4
# `drop` to the above commits

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

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Прежде всего, несвежая ветвь не приносит никакого вреда, поэтому ваша цель мне неясна. Это только презентация? Если да, вы можете вывести только master с

git log --graph --oneline master

Но давайте примем предпосылку: как избавиться от нежелательных коммитов?

Вы должны найти какие ссылки находятся на коммите 32aedba с чем-то вроде

git branch --contains 32aedba

, затем удалите эти ветви с

git branch -D <branch>

(-D вместо -d, потому что это будет распаковывается и потребует применения силы)

Альтернативой (см. комментарий Лассе) будет вывод refs в вашей команде с

git log --graph --oneline --all --decorate
0 голосов
/ 24 февраля 2020

git pu sh origin --delete [branchName] Удалить удаленную ветку

...