2014-12-08 4 views
4

Документация git недостаточно ясна об этом, но все в Интернете, похоже, знают об этом.Где git rebase вносит изменения

Скажите, сейчас я нахожусь в ветке функций, которая называется feature/test. Если я делаю git rebase master, где выполняется перестановка? На ветке признаков или на главной ветке? То есть. какой из них меняется? Имеет ли тот же синтаксис, что и git merge, так, как изменяется текущая ветвь? В таком случае мне нужно было вернуться к master и выполнить слияние с моей ветвью функций?

Редактировать: что я хочу сделать, это «слить» (в данном случае rebase) ветку master в мою ветвь функции, а затем «объединить» ветвь функции обратно в master.

ответ

4

Так как вы переустанавливаете feature/test на masterfeature/test филиал изменен. Например.

  master 
      | 
      V 
A----B-----C 
     \ 
     D----E 
      ^
      | 
      feature/test 

После этого

git checkout feature/test 
git rebase master 

ваш репозиторий будет выглядеть следующим образом

  master 
      | 
      V 
A----B-----C----D'----E' 
        ^
         | 
         feature/test 

Обратите внимание, что D'! = D, так как он имеет новый родитель в настоящее время. Тем не менее он содержит те же самые изменения.

EDIT:

И как бы я принять изменения от признака/тест обратно в мастера?

С feature/test в порядке с ведущим git будет просто перемотка вперед ведущей веткой.

git checkout master 
git merge feature/test 

приведет к

     master 
         | 
         V 
A----B-----C----D'----E' 
        ^
         | 
         feature/test 

См Git-Branching-Basic-Branching-and-Merging подробности

+0

И как бы я принять изменения от 'особенность/test' обратно в мастер? Было бы безопасно делать простое слияние, или мне также нужно было бы там переустановить, чтобы сохранить историю проекта? –

+0

Вы можете смело объединиться с мастером, поскольку, очевидно, не будет никаких конфликтов, так как вы только что построили текущее состояние. – kasoban

+0

Прохладный. Все работало так, как вы сказали :) –