Как уже упоминали другие, я настоятельно рекомендую освоиться с ветками. Мой рабочий процесс обычно:
Начиная с главной ветки *:
git checkout -b awesome-new-killer-feature
создать новую ветку (-b) и проверить ее.
написать код ...
git add .
, git status
, git commit
совершить небольшие изменения, повторите шаг 2
О, нет! Мой друг только что сообщил о серьезной ошибке! Он потерял данные !!!!!
git checkout master
вернуться в основную ветку
git checkout -b bugfix-serious-data-loss
создать новую ветку для исправления
исправление ошибок, git add
, git status
, git commit
, полоскание, повторение до устранения ошибки
git checkout master
вернуться в главную ветку
git merge --no-ff bugfix-serious-data-loss
исправление ошибки слияния обратно на мастер
Хорошо, теперь я могу вернуться к работе над своей потрясающей функцией new-killer:
git checkout awesome-new-killer-feature
возобновить работу над тем, над чем я работал
git rebase master
объединить изменения мастера с рабочим кодом, чтобы мы воспользовались исправлением ошибки. Не говоря уже о том, что это уменьшает вероятность конфликтов слияния позже, когда нам нужно слить эту ветку обратно в master
написать код, git add
, git status
, git commit
, промыть, повторять до завершения функции
git checkout master
, git merge --no-ff awesome-new-killer-feature
объединить ветвь обратно с мастером
Теперь сядьте и наберите gitk
, чтобы увидеть хороший исторический обзор того, что вы делали.
Дополнительно:
git branch -D bugfix-serious-data-loss awesome-new-killer-feature
удалить неиспользуемые ветки. Мне нравится содержать мой репо в чистоте
Сила git не в том, чтобы проверять вашу работу. Это зависит от того, насколько быстро и дешево выполняется ветвление и слияние. Ветвление позволяет вам работать над несколькими идеями одновременно и / или экспериментировать с одноразовыми идеями, не затрагивая стабильный код. Если идея не работает, просто удалите ветку, если она работает, объедините ее с мастером.
* примечание: по традиции большинство пользователей git называют свою основную / транковую ветку "master".