2015-04-12 5 views
3

Рассмотрим следующее дерево:Как «переустановить» одну фиксацию?

A --- B --- C --- D --- E --- F --- master 
\ 
    \ 
    B' --- C' --- D' --- topic 

где (B != B'). Я хотел бы сделать git rebase --onto master master topic, но это порождает конфликты. Но ситуация проще: я хотел бы поставить одиночный topic на master.

git checkout master 
git cherry-pick topic 
git checkout topic 
git reset --hard master 
git checkout master 
git reset --hard HEAD~1 

Нельзя ли с помощью одной команды выполнить команды выше?

+0

Почему бы не просто исправить конфликты? –

+0

, потому что на самом деле конфликтов нет ... – user3719454

+0

Возможный дубликат [git rebase single commit] (http://stackoverflow.com/questions/14635672/git-rebase-a-single-commit) –

ответ

2

Сбросить ветвь, а затем использовать reflog найти обязательство вишневого выбрать:

git checkout -B topic master # re-create topic branch at the commit of master 
git cherry-pick [email protected]{1} # copy the old tip of the topic branch 

Другой - может быть еще проще - путь будет проходить перебазироваться диапазон коммитов, который состоит только из о едином коммите, который вы хотите перевести:

git rebase --onto master topic^ topic 
+0

если я понимаю ' -B' правильно, второй вишневый курок должен сказать, что делать нечего, потому что он пытается выбрать тот же самый мастер фиксации, на который указывает, я думаю, что 'topic @ {1}' следует заменить прямым хешем согласитесь, исправьте меня, если я ошибаюсь. –

+0

@MohammadAbuShady: 'topic @ {1}' относится к предыдущей фиксации, на которую указывает ветка. Перед проверкой/сбросом он указал на 'D'', после проверки он указывает на' F'. 'topic @ {0}' будет 'F',' topic @ {1} 'будет' D''и' topic @ {2} 'будет любым, на что указывает, перед' D'' (скорее всего, 'C '' – knittl

+0

hm, это интересно, так что если я, например, делаю« git rebase origin/develop », то обнаруживаю, что я испортил конфликт или что-то в этом роде, я мог бы просто выполнить« git reset -hard develop {1} '? –

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