Это немного сложнее, и вы не можете сделать это правильно, если другие уже есть копии фиксаций. То есть если вы переместили основную ветку в удаленный репозиторий, который используют другие люди или люди вытаскивают из вашего репозитория, нет чистого способа избавиться от этого.
Вы должны переписать историю ведущей ветки. Здесь есть два случая. Из вашего вопроса, я предполагаю, что в master
есть фиксация, которая была создана до любой из кодов, которые вы хотите удалить из мастера. Пусть идентификатор этого фиксации будет rootcommit
. Пропустите шаги 1 и 2, если у вас уже есть новая ветка для вашего кода, разветвленная мастер.
git checkout master
: убедитесь, что вы находитесь в мастерской.
git checkout -b my-fancy-new-branch
: создайте свою новую ветку.
git checkout master
: переключиться обратно на главный
git reset --hard rootcommit
: переустановите мастер в состояние до того, как вы его совершите.
- по желанию, и если у вас есть пульт дистанционного управления Вы тянете от:
git pull --ff
(. Если это не удается, потому что тянуть не быстро вперед, вы должны пересмотреть rootcommit
Он содержит некоторые ваши работы)
В самом деле, это должно даже работать, если вы вытащили из любого пульта во время работы над своим кодом. Если вы хотите, чтобы ваши коммиты на вершине фиксаций с пульта дистанционного управления, вы можете перебазировать свой новый филиал на удаленных изменениях:
git checkout my-fancy-new-branch
git rebase master
Чтобы применить эти изменения в пульт дистанционного управления, что возможно, но a огромная проблема, вы должны сделать силовое нажатие на мастер сейчас. Каждый, у кого есть клон этого хранилища, теперь должен проявлять особую осторожность, когда тянет, потому что история мастера изменилась. Они должны выполнять те же самые шаги, что и вы, затем вытаскивать, а затем повторно использовать свои локальные изменения, если они есть. Чтобы выполнить принудительное нажатие, вы должны выполнить:
git checkout master
git push --force
Как сказано, силовые толчки действительно злые, и вам, вероятно, следует избегать этого. Если вы можете, просто оставьте коммиты в истории и сделайте это в следующий раз.
Вы совершили ошибку и нажали на пульте дистанционного управления? –
Да, я нажал на удаленный, я хочу создать новую ветку на самом пульте и переместить весь код из мастера в новую ветку –