Отмена изменения двух коммитов и получение чистого состояния. - PullRequest
0 голосов
/ 30 мая 2018

Скажем, у меня есть история коммитов, которая выглядит следующим образом:

A <- B <- C

Я в настоящее время на C. Я ненавижу свои коммиты B и C, и я хочу вернуться кА с чистой постановкой и без изменений .. Я хочу состояние А. Как мне сделать это наиболее эффективным способом.В настоящее время я делаю это:

git revert --no-commit B
git revert --no-commit A
git checkout .

Это также делает так, что нет возврата / нет нового подтверждения, показывающего мой возврат.Скажи, что я хочу этого.Что мне делать?

Есть ли лучший способ?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

, чтобы вернуться к фиксации A, выполните следующую команду:

git reset --hard A

, и если у вас все еще есть неотслеживаемые файлы в вашем локальном компьютере, вы можете выполнить команду ниже:

git clean -f -d

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

0 голосов
/ 30 мая 2018
git reset --hard A

Это вернет вас к ревизии A, и это очень близко к слову "b и C не произошло".Кроме того, текущая ветвь начнет указывать на A, поэтому используйте с осторожностью.

Если вам нужна новая ревизия D, следующая за C (A <- B <- C <- D), чтобы она имелатот же контент, что и A, тогда вы можете попробовать это: </p>

git checkout A -- . # take back content of the whole project to how A was
git commit -m "Going back to revision A"

Если вы хотите сделать это с возвратами, которые не создают фиксацию:

git revert --no-commit A..C
git commit -m "going back to A"

Или:

git revert --no-edit A..C
git reset --soft HEAD~2 # Moving branch pointer to C keeping everything else as-is
git commit -m "going back to A"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...