Удалить все коммиты, которые я нажал

git git-commit revert

45 просмотра

1 ответ

Я был включен, branch1и у него есть пара коммитов, для которых я сделал branch1. После выполнения моей задачи (и отправки этих коммитов на удаленный). Я переключился на branch2с branch1с помощью следующей команды

git checkout -b branch2

Я намеревался создать его из, masterно я по ошибке создал его изbranch1

Я сделал несколько изменений, branch2а затем зафиксировал / передал на пульт по команде git push origin branch2. Теперь, когда я смотрю на удаленное репо, я вижу все свои branch1коммиты в истории branch2.

Имейте в виду, что это был мой первый коммит, branch2так что мне действительно безразличны все предыдущие коммиты.

PS

Еще немного предыстории, как связаны ветви.

У меня был какой-то код, который был в masterветке (который мы решили утилизировать). Теперь я создал новую веткуbranch1

> git status
> on branch master
> git checkout -b branch1

который имеет основные леса проекта. Эта ветка (после утверждения) будет объединена (в этом случае перезаписать) masterветку. branch2Имеет дБ слой добавлен на вершине. Теоретически это было бы добавлено поверх, branch1но когда я сделал это, я увидел, что branch2все коммиты, которые у меня были в branch1этом, заставили меня задуматься о том, что когда мы branch1сойдемся master, branch2то не приведет ли это к истории двойных коммитов ? Вот причины , я хотел , чтобы удалить предыдущие коммиты (которые были заимствованы из branch1к branch2).

Автор: Em Ae Источник Размещён: 04.11.2019 11:37

Ответы (1)


1 плюс

Когда вы сделали:

git checkout -b branch2

Вы создали branch2на вершине branch1. Это означает, что все коммиты branch1будут там, с новыми коммитами, которые вы сделали, чтобы branch2быть добавленными поверх этого. Не зная, каковы точные отношения между branch1и masterпоследним, из которого вы действительно намеревались создать свою ветку, самый безопасный способ исправить ситуацию может состоять в том, чтобы выбрать новые коммиты из вишни branch2на ветку, созданную из master:

git checkout branch2
git log
# observe and record the SHA-1 hashes of the commits you made

git checkout master
git checkout -b new_branch2

# now cherry-pick the commits from branch2 which you want to keep
git cherry-pick 2hie87jm8   # first commit
git cherry-pick j2cnd82ld   # second commit
# and so on for all commits, in the order you made them

Теперь ваши коммиты находятся на вершине правильной ветви. Вы можете удалить branch2сейчас через:

git branch -d branch2
Автор: Tim Biegeleisen Размещён: 06.05.2016 12:42
Вопросы из категории :
32x32