Возможно ли это с помощью Git?

#git-push #git-checkout #git-commit #git

#git-push #git-проверка #git-фиксация #git

Вопрос:

Я хочу, чтобы мой репозиторий git находился в том состоянии, в котором он находился при определенной фиксации. Как только репозиторий будет в нужном состоянии, я хочу иметь возможность отправлять на Github, чтобы удаленный сервер находился в этом состоянии. Я знаю, что могу вызвать git checkout <commit hash> и мое локальное репозиторий будет в том состоянии, в котором оно было при данной фиксации, но это не позволит вам выполнить push.

Я предполагаю, что мне следует что-то сделать с git checkout , но я не знаю, что делать.

Спасибо за любую помощь по этому простому вопросу 🙂

Ответ №1:

Вам нужно нажимать с силой, так как вы собираетесь потерять историю.

 git push -f origin master
  

Это принудительно подтолкнет ваши изменения. Если вы пытаетесь что-то отменить, вы можете подумать git revert , поскольку это позволит вам сохранить историю.

Комментарии:

1. Хорошо, спасибо. Я решил отказаться git revert потому что это большая разница во времени между текущей фиксацией и фиксацией, которую я хочу.

2. Почему? Возвраты обратимы. Потеря истории — нет.

3. Я думаю, что это git revert правильный путь, но оператору придется отменять каждый отдельный коммит между HEAD и целевой фиксацией, верно? Если только нет другого способа сделать это напрямую с помощью одной команды git.

4. @Jeet, git revert может принимать различные коммиты.

5. @Karl: Но слияния сложно отменить.

Ответ №2:

Используется git reset --hard <commit> для сброса репозитория к определенному коммиту.

Это приведет к потере изменений в рабочем каталоге и любой фиксации после commit . Вы все еще можете вернуть новые коммиты из git reflog , а затем использовать git reset для этих коммитов.

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