2016-09-29 6 views
0

У меня следующая ситуация:Как переустановить указанную фиксацию для разных ветвей с помощью SourceTree?

SourceTree Git log output

Как я могу rebase последней фиксации от постановки (удален ProxyFinder ...) на warning-fixes с помощью SourceTree?

Один из способов заключается в объединении staging в warning-fixes, а затем сбросить staging на предыдущую фиксацию, но это звучит как неприятное обходное решение.

+0

Слияние постановки с фиксированным предупреждением в порядке. Он ничего не сделает для постановки. В этом случае вы также можете сбросить предупреждения на установку. – ElpieKay

+0

Но разве это можно сделать с помощью rebase? - literaly переместить фиксацию и все ее дочерние элементы в другую ветку, если изменения «слияния» – Antoniossss

ответ

0

Лучший способ сделать это, как указано в @ElpieKay's comment, и в конце вашего вопроса: объединить staging в warning-fixes, а затем сбросить staging к предыдущей фиксации.

Чтобы сделать это из командной строки, выполните:

git checkout warning-fixes 
git merge staging 
git checkout staging 
git reset --hard HEAD^ 

В SourceTree:

  1. Дважды щелкните warning-fixes, чтобы проверить его.
  2. Щелкните правой кнопкой мыши по адресу staging.
  3. Нажмите Merge staging into current branch.
  4. Дважды щелкните staging, чтобы проверить это.
  5. Щелкните правой кнопкой мыши предыдущую фиксацию, где в настоящий момент находится origin/staging.
  6. Нажмите Reset current branch to this commit.

Причина, по которой вы не хотите использовать rebase, заключается в том, что она не просто перемещает коммиты, но также перемещает указатель ветвления. В этом случае попытка переустановки staging на warning-fixes не повлияет, так как фиксация на конце staging уже имеет тот же родительский элемент, что и кончик warning-fixes.

Единственная реальная альтернатива - использовать cherry-pick, но это будет (по умолчанию) создать дубликат фиксации с новой датой коммиттера. (И становится больно, если у вас есть более чем одна фиксация для перемещения.)

+0

Что касается 'cherry-pick', то в дублированных коммитах будет побочный эффект. – Antoniossss

+0

@Antoniossss На самом деле не будет: поскольку фиксация, которую вы «вишневый» выбирает, имеет тот же самый родитель, что и кончик «предупреждений-исправлений», Git будет повторно использовать фиксацию и просто переместить «предупреждения-исправления» вперед 1 commit , –

+0

создает дополнительную фиксацию с тем же содержимым, что и вишня, выбранная в моем случае ... почему? – Antoniossss

 Смежные вопросы

  • Нет связанных вопросов^_^