Почему git-rebase сталкивается с конфликтами, когда апстрим уже доступен? - PullRequest
3 голосов
/ 16 сентября 2011

У меня есть ветка git "dev".Ветвь "мастер" достижима от dev.Находясь в ветке "dev", если я наберу "git log master..dev --pretty = oneline", это ясно покажет, что master достижим (104 коммитов ранее).Но если я наберу "git rebase master", это прекратится с конфликтами.Это почему?Разве в этом случае разве не нужно ничего делать, так как dev уже основан на master?

Причина, по которой я спрашиваю об этом, заключается в том, что я действительно хочу сделать интерактивную перебазу со сквашами и словами для очисткидлинная история.Но меня отталкивает необходимость разрешать все конфликты, которые уже должны были быть разрешены после начала перезагрузки.

Ниже приведены некоторые связанные вопросы, на которые я уже посмотрел:

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

git rebase master перебазирует вашу ветку на основе последнего коммита в master.Если вы хотите основать это на чем-то раньше, вам нужно указать точный коммит, т.е.

git rebase `git merge-base master HEAD`
0 голосов
/ 17 сентября 2011

rebase! = Слияние

Если вы просто хотите перемотать вперед, используйте

git pull --ff-only ...
git merge --ff-only ...

Если вы хотите «автоматически перебазировать / перемотать вперед» в зависимости от текущего контекста и отношений вашеговетки, я полагаю, это будет работать:

git pull --rebase ...

Вы можете прочитать страницу руководства о том, что он делает, в точности

...