Синхронизировать локальную ветку git с удаленной веткой git, которая удалила определенный коммит - PullRequest
0 голосов
/ 28 сентября 2018

Я использую удаленный репозиторий git.Пользователь фактически удалил определенный коммит, который он не хотел в истории git (коммит не является последним коммитом).Возможно, они сделали что-то вроде этого:

git reset --hard <sha1-commit-id>
git push origin HEAD --force

Я не на 100 процентов, если эти команды они использовали.Все, что я знаю, это то, что коммита больше нет в удаленном хранилище.У меня есть коммит в моем локальном Git-репозитории.И это не ГОЛОВА (последний коммит).Это похоже на 10 коммитов обратно в выводе git log:

git log
...
commit a5df5
Author:
Date:
This is the commit that I have locally but no longer in remote

Теперь, когда я делаю git push, он снова появляется в удаленном репозитории.Как я могу убедиться, что этот коммит больше не отправляется в удаленный репозиторий?

Я думаю сделать это:

git fetch origin latest_stuff
git reset --hard origin/latest_stuff

Будет ли это гарантировать, что конкретный коммит git пропал с моего локального компьютера

1 Ответ

0 голосов
/ 28 сентября 2018

Вы должны быть чрезвычайно осторожны, чтобы другие люди знали о ситуации, чтобы подобные вещи не происходили.

Итак ... как это можно исправить?Это может быть исправлено на вашей стороне, на самом деле.Итак ... скажем, что коммит, который вы хотите удалить, имеет идентификатор xxxxxxxx, тогда:

git checkout xxxxxxxx~1 # we go back one commit from the one we want to discard from history
git cherry-pick xxxxxxxx..the-branch # replay the history of the branch _after_ the revision you want to delete
git branch -f the-branch # set pointer of branch to new location
git push origin -f the-branch

Таким образом, ревизия была удалена из истории ... это имеет значение, если еще много разработчиков работаютна проекте (потому что они будут иметь ревизию, которую вы хотите удалить в своих ветках).Убедитесь, что все разработчики осведомлены, и, если необходимо, перебазируйте свою работу, прежде чем пытаться нажать на «новую» чистую ветку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...