Вернуть зафиксированные файлы в их версию в master? - PullRequest
1 голос
/ 03 апреля 2019

Я изменил несколько файлов и зафиксировал свои изменения.

Я заметил, что есть 3 файла, которые я не должен был изменять, и я хочу, чтобы они вернулись к тому, чем они были в master, но я не хочу возвращаться к предыдущему коммиту, потому что не хочу, чтобы другие изменения моего файла были потеряны.Как мне это сделать?

1 Ответ

3 голосов
/ 03 апреля 2019

Если бы вы еще не нажали , поэтому ваш коммит пока только локальный, простой процесс будет

# restore these 3 files to their previous state
git checkout HEAD^ -- path/to/file1 path/to/file2 path/to/file3

# include these changes...
git add path/to/file1 path/to/file2 path/to/file3

# ... in last commit
git commit --amend

Однако, если вы уже уже нажали , есть 2 основных сценария:

1) Либо вы работаете в этом репо в одиночку, либо делитесь репо, но работаете в одиночку в этой ветке (часто это касается функциональных веток, но зависит от вашего рабочего процесса)

Вышеописанный процесс в порядке, просто имейте в виду, что в следующий раз, когда вы захотите передать на удаленный компьютер, вам придется использовать флаг -f в вашей команде push для принудительного обновления старого ref.

2) или это общая ветка, ее история не может быть изменена без каких-либо проблем

Тогда вышеописанного процесса переписывания истории следует избегать. Вместо этого вам просто нужно пропустить параметр --amend в конце, и он сделает новый коммит, который содержит только эту последнюю модификацию ваших файлов. Менее элегантно, чем совершать его правильно, но вы не изменили историю, и ваши файлы в порядке.

...