Как исправить отмененный git commit?

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

Ответ 1

Вы пытались вернуться к возврату?

Они вернули вашу фиксацию, используя

git revert <your commit id>

Возвращение само является фиксацией и имеет свой собственный идентификатор фиксации. Итак, теперь вам нужно сделать

git revert <the commit id of his revert-commit>

Ответ 2

Вы можете попытаться вернуть реверты, используя git revert. Вы также можете восстановить файлы из вашей фиксации с помощью git checkout. Или вы можете использовать git cherry-pick -n для их повторного применения и изменения. Вы можете создать новую ветку из своей фиксации, где вы применяете изменения, используя git branch. Возможности (почти) бесконечны.:)

Ответ 3

Другие ответы здесь касаются того, как возвращать или вишневы выбирать свои коммиты, но это звучит из вопроса, как если бы вам также нужно было знать, как найти ваши коммиты, поэтому здесь приведены некоторые рекомендации.

Если вы просто запустите git log, вы увидите список коммитов в истории вашего текущего ветки, начиная с самого последнего. Каждый фиксатор имеет идентификатор, технически известный как имя объекта (или "SHA1sum of commit" ), который выглядит следующим образом:

commit d2d434beeb03e4ee648ca7ca2a1ea1ed09077306

... за которым следует имя автора, дата и сводка изменений, которые были введены этим фиксатором. Когда вы указываете имя объекта для git revert или git cherry-pick, вы можете дать ему d2d434beeb03e4ee648ca7ca2a1ea1ed09077306 или достаточно символов с начала имени объекта, чтобы быть однозначным (например, d2d434bee)

git log имеет множество опций, которые могут помочь вам отслеживать ваши фиксации, например --before, -S и т.д., но в этом случае вам может потребоваться --author=MyLastName.

Графический инструмент git, который может красиво представить вам историю и доступен на каждой платформе gitk --all. Если вы нажмете на фиксацию, которую хотите вернуть, вы можете скопировать и вставить ее имя объекта из поля "SHA1 ID" в середине окна.