Как я могу вернуть определенные файлы коммита?

Я отправил коммит, который изменил файлы file1, file2, file3, file4, file5.
Я решил, что логика неверна, и в рамках фиксации я изменил некоторые API в файлах files2, file3.
Что я хочу нужно как-то отменить локальные изменения для files2, files3 и и правильно исправить остальные файлы.
Итак, начните мое исправление, взяв за основу исходную версию files2, files3, но самую последнюю из остальных.
Как я могу это сделать?


person Jim    schedule 27.07.2015    source источник


Ответы (2)


Самый простой способ сделать это:

# get the version of the file from the given commit
git checkout <commit> path/to/file

В моем случае:

git checkout b1cdc80fffe381eb3938e7b7f337d6550ffbd199 /MyProjects/AndroidCameraAPI/app/src/main/java/info/androidhive/androidcameraapi/MainActivity.java

Затем изменил мой код и снова совершил фиксацию.

ПРИМЕЧАНИЕ. Коммит, который я использовал в моем примере, был стабильной версией, к которой я хотел вернуться.

person Mohammad Arman    schedule 27.07.2015
comment
Так что проверьте версию файла перед моей фиксацией. А по окончании нажать? - person Jim; 27.07.2015
comment
Почему, когда я оформляю заказ, файл уже готов к фиксации? - person Jim; 27.07.2015
comment
Да, это будет сделано для фиксации. На этом этапе вы можете внести необходимые изменения и снова выполнить фиксацию. Или, если вы хотите сделать его более чистым, то после проверки предыдущей фиксации создайте новую локальную ветвь. Сделайте свою модификацию. Затем зафиксируйте и отправьте в удаленную ветку. - person Mohammad Arman; 27.07.2015
comment
Что я делаю, так это СБРОС для файлов, поэтому они стали неустановленными. И сейчас я над этим работаю. Это нормально? - person Jim; 27.07.2015
comment
Деактивировать файл не нужно. Поэтапный файл означает, что его можно передать в рабочую ветку. - person Mohammad Arman; 27.07.2015
comment
В одном файле мне нужно сделать небольшую модификацию. В другом оригинал. Так что это нормально, как я это делаю? СБРОСИТЕ тот, с изменениями, затем добавьте и т. Д. - person Jim; 27.07.2015
comment
Да, все в порядке. Вы можете пойти на это. :) - person Mohammad Arman; 27.07.2015

Самый простой способ - выполнить мягкий сброс вашего коммита (при этом изменения в ваших файлах сохранятся, но не будут зафиксированы). Отмените изменения для файлов 2 и 3 (это вернет их к предыдущей фиксации).

Документация по сбросу Git

person Jelle    schedule 27.07.2015
comment
Что вы имеете в виду мягкий сброс? Я нажал свою фиксацию, и теперь на ней есть другие - person Jim; 27.07.2015
comment
Понятно. В этом случае вы можете проверить предыдущую фиксацию ваших изменений. Добавьте новую фиксацию с исходными файлами 2 и 3 и выберите их вишневым цветом: git-scm.com / docs / git-cherry-pick - person Jelle; 27.07.2015
comment
Почему срывают вишню? Извините, я не очень хорошо разбираюсь в git - person Jim; 27.07.2015