Определим, что именно необходимо:
- Посмотреть состояние на определенном моменте.
- Откатиться на какую-либо ветку, индекс, рабочую область.
Выбираем нужный коммит, и в консоли (и сразу откатываемся на нем):
git checkout ID_коммита
Чтобы посмотреть, состояние проекта на определенном моменте, для этого есть команде git log. Один из способов просмотреть лог (последние 10 коммитов):
git log --oneline -10
Теперь чтобы вернуться на последний актуальный коммит:
git checkout master
Чтобы переключиться на определенный коммит, и создать отдельно ветку – набираем в консоли:
git checkout -b имя_новой_ветки ID_коммита
2. Теперь рассмотрим случай, когда возвращаться не нужно, а требуется только удалить все свои незакомиченные изменения (которые ещё не индексировались командой git add):
git stash save --keep-index
при этом появится ещё одно состояние проекта (карман).
Удалить все индексированные и неиндексированные изменения:git stash save
Вернуть обратно:git stash apply
Если «карман» не нужен, его можно удалить:git stash drop
И наконец, если необходимо переключиться на предыдущий коммит, отменить все последующие и продолжить разработку с него, лучший способ – это использовать git revert.
Эта команда создает новые коммиты на каждый последующий от текущего состояния.
Синтаксис следующий:git revert IDs_коммитов
илиgit revert ID_коммита..ID_коммита
Замет нужно всё это дело подтвердить коммитом:git commit -m 'что и зачем'
3. Допустим запушили с помощью git push --force
чтобы только ваши изменения были в репозитории (на другие коммиты нам начхать). Крайне нежелательная команда, но что поделаешь…
Протолкнули со свистом. А что же делать с тестовым сайтом? Как на нем теперь вернуться в рабочее состояние?
Используем следующий набор команд:git fetch --all
git reset --hard origin/master
git pull origin master
А чтобы не фиксировать изменения прав доступа:git config core.filemode false
И глобально:git config --global core.filemode false
