Как зафиксировать только некоторые файлы, когда я хочу получить неизмененную версию другого? - PullRequest
2 голосов
/ 27 сентября 2019

Я думаю, что это самый распространенный вопрос о git.Но у меня есть специфическая проблема.

Например, я получил несколько файлов в своем локальном git и изменил некоторые из них.Однажды я вспомнил, что допустил ошибку в файле, но хочу сохранить изменения в остальных файлах.Я могу изменить их статус на поэтапный с помощью git add, но как зафиксировать только выбранные файлы и вернуть исходную версию файла, которую я не хочу фиксировать прямо сейчас.

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

Ответы [ 2 ]

2 голосов
/ 27 сентября 2019

Вы можете использовать новую команду git restore ( менее запутанно, чем git checkout), с Git 2.23+ (август 2019 г.)

Youможет восстановить как индекс, так и рабочее дерево (это то же самое, что и git-checkout)

$ git restore --source=HEAD --staged --worktree hello.c

или краткую форму, которая более практична, но менее читаема:

$ git restore -s@ -SW hello.c
1 голос
/ 27 сентября 2019

Исходя из вашего комментария, если у вас есть три файла: файл1, файл2, файл3 и вы хотите зафиксировать только файл1, файл2 и хотите неизмененную версию файла3, вы можете использовать приведенную ниже команду извлечения на уровне файла.

git checkout master -- file3 # then copy the version of file3 
                                  # from branch "master"

Таким образом, файл3 копируется из главной ветки в вашу локальную.

Теперь вы можете продолжить и зафиксировать.

git add file1, file2 
git commit -m "modified file1, file2"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...