Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Работа с ветками в git

#git #git_branch


Описание ситуации: есть 3 ветки master-> working_branch-> footer.
Состояние ветки footer:
$ git status 
В ветке footer

Changes not staged for commit:
  (используйте "git add ..." чтобы обновить данные для закрепления)
  (используйте "git checkout -- ..." чтобы отменить изменения в рабочей директории)

    modified:   templates/-----/index.php

$ git checkout working_branch 
M   templates/gorobar/index.php  **////////Что это значит?**

Перешел к ветке 'working_branch'
$ git status 
В ветке working_branch

Changes not staged for commit:
  (используйте "git add ..." чтобы обновить данные для закрепления)
  (используйте "git checkout -- ..." чтобы отменить изменения в рабочей директории)

    modified:   templates/-----/index.php

Не закомиченные изменения из ветки footer почему-то отображаются в ветке working_branch!!!
Почему?    


Ответы

Ответ 1



Все абсолютно правильно. Стандартное поведение для большинства систем контроля версий. Когда Вы переключаете ветку, а у Вас есть незакоммиченные данные (что уже само по себе идеологически неверно), то git (svn, cvs) делают merge изменений. Собственно это Вы и наблюдаете. Поэтому, либо всегда коммите перед переключением, либо пользуйтесь "карманом" - git stash.

Ответ 2



Если бы вы сделали git add (добавили вы, то вам предложили бы закоммитить изменения в той ветке, в которой вы находились при переключении, и предупредили, что в противном случае изменения будут утеряны. Раз изменение не staged (как у вас), то git предполагает, что возможно вы хотите его закоммитить в другой ветке. Комитьте в той ветке, где нужно перед переключением, git stash легко забыть, а git log всегда под рукой. Добавить позже новые изменения в последний коммит можно git stash --amend'ом, а отменить коммит, но оставить изменения git reset HEAD~1. Можно и объединять комиты (в том случае, если ещё не пушили их в репозиторий, откуда их кто-то мог забрать). И прочтите же уж книгу, она бесплатная и на русском.

Комментариев нет:

Отправить комментарий