git rebase за допомогою sourcetree


83

Я думаю, що мене бентежить, як використовувати графічний інтерфейс SourceTree для git rebase. У мене є дві гілки "master" і "dev". Як видно, дві гілки розійшлися. Я хочу зробити перебазування на гілці "dev", використовуючи командний рядок, це буде:

git checkout dev
git rebase master

введіть тут опис зображення

Я очікував би клацнути правою кнопкою миші "dev" та вибрати "Rebase current changes into dev". Я припускаю, що поточні зміни означають "нові коміти на майстрі". Але вибір цього варіанту, здається, не має жодного ефекту. Які правильні кроки?

Відповіді:


119

Але вибір цього варіанту, здається, не має жодного ефекту.

Так, оскільки поточні зміни - це одна з поточних гілок, яка є dev.

Перебазування devна вершині devозначає відсутність дії.

git checkout dev
git rebase master

Це означає: поточна гілка dev: перебазувати поверх master.

Отже, у SourceTree потрібно клацнути правою кнопкою миші master(поки devвиїзд) і вибрати:

Rebase current changes onto master

Хоу додає в коментарях :

Поточне присвоєння імені " rebase current changes onto [branch]" вводить в оману. Перегляньте цю дискусію щодо вдосконаленняSRCTREE-1578 .

Після того, як я збентежився, намагаючись привести гілку функції в актуальну стадію з розвитком і не вдавшись, я зрозумів, що пункт контекстного меню лівої панелі, позначений як " rebase current changes onto $somebranch", насправді робить протилежне тому, що випливає з його назви:
він базує поточну гілку до штату $ деякоїгалузі;
Іншими словами, він базується $somebranchна (або в) поточній гілці, а не навпаки. (Так?)

Прийменник “ onto” у поточному тексті вводить в оману; це означає, що об’єкт речення ( $somebranchу моєму прикладі) отримає зміни.
Насправді відбуватиметься навпаки.
Відсутність назви поточної гілки додає плутанини.

Переформулювання, що покращує структуру речення та включає назву ураженої гілки, дало б величезний виграш для ясності.
Наприклад:

rebase $currentbranch to head of $somebranch
rebase $somebranch onto $currentbranch

13
Для зв'язку downvote від мерця , який відправив відповідь раніше , не звертаючись SourceTree взагалі. Я проголосував і пояснив свою критику в коментарі. Очевидно, мертвець не оцінив конструктивних зауважень, які я зробив.
VonC

1
Чи змінить це головну гілку? Я просто хотів би оновити мою гілку dev з останніми змінами гілки master - і згодом об’єднати мою гілку dev в master. Чи буде описаний спосіб виконати це завдання?
Герфрід

2
@ Герфрід Погодився. Поки dev не було натиснуто, ви можете перебазувати поверх master.
VonC

14
Sourcetree має змінити формулювання на "Перебазувати останні зміни з Master на Dev" для кращого роз'яснення.
Тимо

4
Поточне присвоєння імені "перебазувати поточні зміни на [гілку]" вводить в оману. Перегляньте цю дискусію щодо вдосконалення: jira.atlassian.com/browse/SRCTREE-1578 .
Zihao Zhao
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.