Вы должны быть осторожны, когда говорите «откат». Если раньше у вас была одна версия файла в коммите $ A, а затем позже было сделано два изменения в двух отдельных коммитах $ B и $ C (так что вы видите третью итерацию файла), и если вы скажете " Я хочу откатиться к первому ", вы действительно это имеете в виду?
Если вы хотите избавиться от изменений как второй, так и третьей итерации, это очень просто:
$ git checkout $A file
и затем вы фиксируете результат. Команда спрашивает: «Я хочу извлечь файл из состояния, записанного коммитом $ A».
С другой стороны, вы имели в виду избавление от изменений, внесенных второй итерацией (т. Е. Фиксацией $ B), сохраняя то, что коммит $ C сделал с файлом, вы захотите вернуть $ B
$ git revert $B
Обратите внимание, что тот, кто создал коммит $ B, возможно, не был очень дисциплинированным и мог совершить совершенно несвязанное изменение в том же коммите, и этот откат может коснуться файлов, отличных от file , вы видите оскорбительные изменения, поэтому вы после этого может потребоваться тщательно проверить результат.