Чи є можливість повернути скоєний файл у Git? Я натиснув коміт на GitHub, а потім зрозумів, що є файл, який я не хотів, щоб його штовхали (я не закінчив зміни).
Чи є можливість повернути скоєний файл у Git? Я натиснув коміт на GitHub, а потім зрозумів, що є файл, який я не хотів, щоб його штовхали (я не закінчив зміни).
Відповіді:
оновлення: додано безпечніший метод
перевірити попередній (незмінний) стан вашого файлу; зверніть увагу на подвійну риску
git checkout HEAD^ -- /path/to/file
фіксуємо це:
git commit -am "revert changes on this file, not finished with it yet"
натисніть, не потрібно сили:
git push
поверніться до своєї незавершеної роботи, знову виконайте (3 рази стрілкою вгору):
git checkout HEAD^ -- /path/to/file
Змінити останній коміт HEAD сховища, затуманивши вашу випадково штовхнуту роботу, при цьому потенційно зіткнувшись із конфліктом з вашим колегою, який, можливо, вже її витягнув, і який відросте сивим волоссям і втратить багато часу, намагаючись примирити свого керівника місцевого відділення з центральним:
Щоб видалити зміну файлу з останнього коміту:
щоб повернути файл до стану перед останнім комітом, виконайте:
git checkout HEAD^ /path/to/file
щоб оновити останній коміт з поверненим файлом, виконайте:
git commit --amend
щоб підштовхнути оновлений коміт до репо, зробіть:
git push -f
Справді, розгляньте можливість використання найкращого методу, згаданого раніше.
git checkout HEAD~2 /path/to/file
? Редагувати: Схоже, те, що я хотів у моєму випадку, було простоgit rm /path/to/file
Якщо ви хочете видалити файл із віддаленого репозиторію, спочатку видаліть його зі свого проекту за допомогою опції --cache, а потім натисніть:
git rm --cache /path/to/file
git commit -am "Remove file"
git push
(Це працює, навіть якщо файл був доданий у віддалене репо кілька комітів тому) Не забудьте додати до .gitignore розширення файлів, які ви не хочете натискати.
Ви можете повернути лише один файл до вказаної версії.
Спочатку ви можете перевірити, в яких комітах файл було змінено.
git log path/to/file.txt
Потім ви можете перевірити файл із номером редакції.
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
Після цього ви можете зробити коміт і натиснути його ще раз.
Скиньте файл у правильному стані, зафіксуйте та натисніть ще раз.
Якщо ви впевнені, що ще ніхто не завантажував ваші зміни, ви можете скористатися --amend
коммітуванням, щоб змінити попередній коміт (тобто переписати історію), а потім натиснути. Думаю, вам доведеться використовувати -f
опцію під час натискання, щоб змусити поштовх.