Отмена коммитов git с помощью push не работала, как ожидалось - PullRequest
0 голосов
/ 07 октября 2018

Я работаю над своим личным проектом (я единственный разработчик).Я расширился за последние два месяца.Теперь, когда я пытался объединить ветку обратно с master, я заметил, что у меня осталась ненужная фиксация на master ветке, что вызывает конфликт.Я подумал, что было бы неплохо удалить его полностью, а не объединять и пытаться разрешить конфликты.

Сначала я вернул его обратно, и все выглядело нормально.Но я подумал, почему бы просто не исключить из истории как revert, так и предыдущий фактический коммит

Итак, я сделал это: git push -f origin HEAD^:master

Однако, когда я делаю git log, я все еще вижу старый коммит, только тот источник / мастер переместился на шаг ниже.

commit 9b7a71ec22f45eb319aec18b47bc56405a50534f (HEAD -> master)
Date:   Sun Oct 7 19:39:53 2018 +0330

    Revert "changes due to new laptop"

    This reverts commit d267cfa4eea1ac54700850ff056f0a86be79730d.

commit d267cfa4eea1ac54700850ff056f0a86be79730d (origin/master, origin/HEAD)
Date:   Wed Aug 1 07:26:53 2018 +0100

    changes due to new laptop

commit ca930bf6ea64ba73a429c371b37654c5d5acc2eb
Date:   Sat Jul 28 12:31:04 2018 +0100

    completed more tests

Прежде чем заняться беспорядком, я подумал, что я должен спросить здесь некоторых экспертов по git.Как я могу сохранить это?

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Вы были на master @ d267cfa, вы отменили этот коммит, таким образом, вы переместили master @ 9b7a71e;

вы нажали HEAD ^ (который тогда будет d267cfa) на удаленном мастере, но не удалили его ни локально, ни "потянул ", таким образом все нормально ИМХО.

Я действительно хочу, чтобы ваш мастер указал @ ca930bf6ea64ba73a:

(Предполагая, что у вас нет нестандартных вещей.)

git checkout master
git reset --hard ca930bf6ea64ba73a
git push -f origin master:master

и это должно быть хорошо

0 голосов
/ 07 октября 2018

Если я правильно понимаю, ваш origin/master указывает на коммит, который вы хотите, d267cfa.Теперь вы можете отказаться от локального master коммита 9b7a71ec, находясь в ветке master и выполнив:

git reset --hard origin/master

Это заставит ваш master указать на origin/master.Убедитесь, что это именно то, что вам нужно - выполнение git reset --hard - это один из немногих способов навсегда потерять коммиты в git.

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