Источник
Если необходимо вернуть файл до предыдущего состояни определенного коммита, необходимо в git log найти хэш ребуемого коммита и прописать git checkout commit_hash path_to_file, где commit_hash - хэш необходимого коммита и path_to_file - путь до файла, который необходимо скинуть.
Пример:
Я добавил в коммит и отправил в удаленную ветку ненужный файл. Поэтому командой git log нашел хэш предпоследнего коммита и выполнил команду:
git checkout db449e5882a85636ae9444c24ec78fe135312ee3 widgets/assets/js/main.min.js
После чего снова запушил файл git add widgets/assets/js/main.min.js -> git commit -m 'fix min.js' -> git push origin CORE-2093. В репозитории в ПР файл откатился до начального состояния.
https://market.yandex.ru/product--smartfon-xiaomi-mi-5-64gb/13517610 |
Иногда бывает такое, что при отправке PR (pull request) в истории коммитов появляются старые. У меня есть теория, что старые коммиты появляются в PR, если вашу ветку смержили ранее и вы не удаляете ее, а продолжаете с ней работать, и при следующем PR в нём появляются старые смерженные коммиты. Решения 2:
- Плохое. Принудительно перезаписать историю коммитов:
git pull -f upstream master
(все коммиты, изменения в репозитории и локальных файлах будут принудительно заменены на актуальные относиетльно целевого репозитория) - Использовать
git cherry-pick
для "перекидывания" необходимые комметов в новую ветку. Для этого необходимо создаь новую ветку (git fetch upstream master
,git checkout -b FETCH_HEAD
) и применитьgit cherry-pick
с указанием, например, хэшей коммитов для переноса в новую ветку. После снова создаем PR, в котором будут только те коммиты, которые были указаны при переносе.
Меня пригласили поработать над open source проектом, но за неимением такого опыта, я столкнулся с проблемой обновления форкнутого репозитория.
Погуглив, я пару раз наткнулся на статьи типа такой, но она мне не подошла, так как после выполнения предложенных команд, в пуллреквесте засчитывались чужие изменения, как мои.
Если очень грамотно погуглить, то можно найти такую статью, она коротенькая и по делу.
Создатель проекта, в который меня пригласили, посоветовал прочитать эту статью на хабре. Она большая, но стоит внимания и разложит всё по полочкам.
А теперь барабанная дробь моя версия как быстро и просто получить последние о