У меня вот так получились, что при слиянии ветки в мастер я получил конфликт. Я его пофиксил(мне так показалось) , но в итоге вообще все поламалось.
Я нашел последний нормальный коммит сделал от него ветку, допилил до нужного состояния и вот теперь она выглядит ровно так как мне нужно.
Теперь вопрос, у меня есть две ветки, одна мастер и вторая test
Мастер после мержа лежит поломанная и test которую я собрал заново.
Как теперь мне сделать мерж, чтоб мастер полностью забрал ветку test и не показывал мне конфликты?
Можно как то просто сказать, что теперь master будет test? Передвинуть указатель или что то в этом роде?
Ответ
Думаю, тут можно поступить так:
git checkout master
git reset --hard commitName1
git merge test
где commitName1 - название того коммита из которого вы начали ветку test. Ветка master сольется с test.
Если в какой-то момент вы поняли, что закоммители плохой, ненужный или поломанный коммит, вы всегда можете сделать git reset --hard stableCommitName. Также важно помнить, что git reset --hard Переводит вашу ветку в указанное состояние, а все более новые изменения стираются. Чтобы обезапасить себя от потери чего-то нужного можно делать так:
git checkout master
git reset --soft commitName1
git stash
git merge test
эффект будет похожий, только более поздние изменения сохранятся в stash. Чтобы их вернуть, достаточно сделать git stash apply. И наконец, если вы потеряли коммит после reset --hard или rebase или еще как-нибудь, то его номер и название наверняка можно найти, сделав git reflog
Комментариев нет:
Отправить комментарий