рабочий процесс в git-ветке - PullRequest
1 голос
/ 23 марта 2011

Мне интересно, каков правильный рабочий процесс для веток и извлечение из мастера.

Я создал ветку и у меня есть файлы с изменениями к ним. В мастере я исправил несколько ошибок, которые мне нужны в моей ветке. Когда я пытаюсь вытащить свою IDE, она предупреждает меня, что изменения в моей ветке будут перезаписаны и что я должен вначале зафиксировать, однако я не в том месте, где я должен зафиксировать.

Каков правильный рабочий процесс для веток с модификациями, которые мне нужно извлечь из master?

Ответы [ 2 ]

3 голосов
/ 23 марта 2011

Если вы хотите внести изменения в «грязное» дерево, вы можете просто git stash и заполнить git merge ....Как только это будет сделано, вы можете восстановить свои изменения с помощью git stash pop.

1 голос
/ 23 марта 2011

Я хотел бы уточнить несколько вещей:

  1. Первое «вытягивание» в терминологии git применимо только при объединении изменений из удаленной ветви в локальную, но не между локальными ветвями. В случае локальных филиалов это будет слияние или перебазирование.

  2. если у вас есть мастер-ветка с некоторыми исправлениями и ветвью разработчика, в которой (я сейчас говорю о локальных ветвях) вы разрабатываете какую-то новую функцию, то кажется, что мастер-ветка является восходящим потоком для вашего разработчика ветка. Поэтому, чтобы сохранить историю как прямую линию в вашей ветке dev, а также выполнить быстрое слияние вашей ветки dev в master ветку в будущем, я бы рекомендовал использовать rebase вместо merge.

т.е. вместо:

git checkout dev
git merge master

Вы бы сделали

git checkout dev
git rebase (-i) master

Аргумент "-i" является необязательным - запускает интерактивное перебазирование. Конечно, это также должно выполняться в чистом рабочем каталоге. Дело в том, что с git вам не нужно долго хранить грязный рабочий каталог, не нужно накапливать изменения. Вы можете легко зафиксировать свои изменения в виде небольших одноцелевых модулей в своих локальных филиалах, а затем очистить их позже с помощью интерактивной перебазировки

из git rebase docs :

Предположим, существует следующая история а текущая ветка это "тема":

      A---B---C topic
     /
D---E---F---G master 

С этого момента результат выполнения любой из следующих команд:

git rebase master
git rebase master topic

будет:

              A'--B'--C' topic
             /
D---E---F---G master 

ПРИМЕЧАНИЕ: последняя форма является всего лишь сокращением git checkout тема с последующим git перебазировать мастер. Когда ребаз выходит из темы останется проверенным филиалом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...