Есть ли возможность вернуть выделенный файл в Git? Я нажал фиксацию на GitHub, а затем понял, что есть файл, который я не хотел, чтобы его нажали (я еще не закончил изменения).
Git: удалить файл после нажатия
Ответ 1
update: добавлен более безопасный метод
предпочтительный метод:
1) проверьте предыдущее (неизмененное) состояние вашего файла; обратите внимание на двойную тире
git checkout HEAD^ -- /path/to/file
2) зафиксируйте его:
git commit -am "revert changes on this file, not finished with it yet"
3) нажмите, не требуя силы:
git push
4) вернитесь к своей незавершенной работе, снова сделайте (стрелка вверх 3 раза):
git checkout HEAD^ -- /path/to/file
эффективно "неудобный":
Чтобы изменить последнее фиксацию хранилища HEAD, запутывая вашу случайно перенесенную работу, в то же время потенциально столкнувшись с конфликтом с вашим коллегой, который, возможно, уже вытащил его, и кто будет расти седые волосы и терять много времени, пытаясь примирить его головка локального ветки с центральной:
Чтобы удалить файл из последнего фиксации:
1), чтобы вернуть файл в состояние до последнего фиксации, выполните:
git checkout HEAD^ /path/to/file
2), чтобы обновить последнюю фиксацию с возвращенным файлом, выполните:
git commit --amend
3), чтобы нажать обновленную фиксацию на репо, do:
git push -f
Действительно, рассмотрите использование предпочтительного метода, упомянутого ранее.
Ответ 2
Вы можете вернуть только один файл в указанную ревизию.
Сначала вы можете проверить, какой файл был изменен.
git log path/to/file.txt
Затем вы можете проверить файл с номером ревизии.
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
После этого вы можете зафиксировать и снова нажать его.
Ответ 3
Reset файл в правильном состоянии, зафиксировать и снова нажать.
Если вы уверены, что никто еще не добавил ваши изменения, вы можете использовать --amend
при совершении, чтобы изменить свой предыдущий фиксатор (т.е. переписать историю), а затем нажать. Я думаю, вам придется использовать параметр -f
при нажатии, чтобы принудительно нажать.