Подтвердить что ты не робот

Git: удалить файл после нажатия

Есть ли возможность вернуть выделенный файл в Git? Я нажал фиксацию на GitHub, а затем понял, что есть файл, который я не хотел, чтобы его нажали (я еще не закончил изменения).

4b9b3361

Ответ 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 при нажатии, чтобы принудительно нажать.