создали новую ветку new
git branch
покажет какие ветки есть в наличие, звездочкой помечена активная ветка
допустим мы накоммитили в ветку master, ветка new при этом находится в той точке где она и была заведена
git checkout new
сменили активную ветку, теперь в git branch звездочкой будет помечена ветка new
и теперь накоммитим сюда. только создадим другие файлы чтобы изменения не конфликтовали. На этом этапе у нас есть две ветки разработки у которых где-то в прошлом есть общий коммит. Но на текущий момент это две параллельные ветки. Когда мы говорим git branch, то в каталоге .git/refs/heads заводится еще один файл с названием как у ветки, в котором содержится commit id на вершину нового фронта разработки
Когда используют ветки:
- совместная разработка
- схема devel - testing - production
- разработка временно ухудшающая качество
операция merge сопровождается специальным commit'ом, который называется merge commit
git reflog
показывает все коммиты в том числе и потерянные пока мы не сделаем repack
это rebase new поверх master
git checkout master
git merge new
здесь merge commit уже не создается потому что история после rebase стала линейная нам нечего сливать, мы просто подвигаем фронт под названием master к тому месту где был фронт под названием new
git rebase --interactive HEAD~5
интерактивный rebase последних 5 коммитов. rebase это переписывание истории его лучше делать на том что мы еще не запушили, если мы rebase' нули то что уже запушили нам потом придется делать force push и те люди которые с вами синхронизируются пострадают.
Комментариев нет:
Отправить комментарий