PDA

Показать полную графическую версию : [решено] Гит


Charg
18-01-2018, 18:03
Создал тестовый репозиторий и пытаюсь разобраться с гитом. Для начала установил клиент с интерфейсом (smart git).
Есть допустим папка (содержимое которой и есть все файлики в репозитории). Меняю файлик, делаю коммит - изменение сохраняется в логе. По кнопке пуш оно отправляется из локальной ветки "мастер" в ту что на сервере.
Делаю пару коммитов, пушу их на сервер. И допустим в итоге до меня внезапно доходит что я запушил какую-то лютую дичь и мне она на сервере не нужна. Как вернутся назад?
Исходя из того что мне удалось нагуглить - подразумевается что пушить коммиты в origin/master нужно только тогда когда на 146% уверен что это самый распоследний окончательный вариант. Но что делать если таки налажал? Как вернуть origin/master в состояние которое там было N коммитов назад?

Busla
18-01-2018, 18:54
самый универсально-безопасный метод - git revert

Charg
19-01-2018, 12:22
Busla, ну и как ним пользоваться? Почитал документацию тут https://git-scm.com/docs/git-revert но там много местных терминов которые я не понимаю. Например что такое working tree, а соответственно и не знаю когда оно clean а когда нет. HEAD commit - ну тут догадываюсь что это самый последний коммит в origin/master но не уверен.

У меня например в origin/master сейчас так:
коммит1 - последний коммент (он же HEAD, как я понимаю) - вносит минимальные изменения, откатывать или нет - всё равно
коммит2 - предпоследний коммит - проблемный - его то мне и нужно откатить
коммит3 - мерж временной ветки какой-то-там с origin/master - вот на состояние сразу после этого коммита мне и нужно откатить ветку origin/master

Из примеров по документации, как я понимаю, мне нужна команда git revert HEAD~1. Так?

upd - попробовал, сработало как нужно
А вообще какой рассово-верный способ выхода из таких ситуаций? Именно реверт?

Busla
19-01-2018, 22:30
Charg, git используют в довольно разных целях, поэтому единственно-верного способа не существует

В процессе обычной деятельности лучше перекрывать ошибку последующим коммитом с исправлениями.
А перекраивать историю только если "дичь" относится не к коду.




© OSzone.net 2001-2012