2015-10-27 2 views
1

Обычно я работаю на ветке «dev». Я создал другую ветку «temp». Но теперь я хотел бы, чтобы мой последний фиксатор на temp (который является чистым) полностью заменил мою последнюю фиксацию на «dev» (которая действительно перепуталась). Поэтому я могу продолжить работу над «dev» с помощью чистого фиксации.git заменить фиксацию фиксацией из другой ветви

Можете ли вы мне помочь?

Благодаря

ответ

3
$ git checkout dev 
$ git reset --hard HEAD^ 
$ git cherry-pick temp 

Это сбросит ваш Dev ветвь к предыдущей фиксации (HEAD^ это один, прежде чем ток) (reset --hard отбрасывает все текущие изменения, а также изменения, которые совершают), а затем применить наиболее недавняя фиксация температуры ветвления на ветвь dev, сохраняющая состояние ветви temp.

git reset --hard может вызвать проблемы при неправильном использовании, знать о what it does, прежде чем использовать его.

+2

Если вы не уверены в сбросе, вы всегда можете создать ветвь 'save' перед сбросом. Если все сработало хорошо, просто удалите 'save' – Altoyyr

+0

@Altoyr, что является достойной сетью безопасности, которая не предполагает возиться с reflog. Хороший совет –

+0

@TimCastelijns спасибо, но зачем мне возвращаться к 'HEAD ^', не могу ли я просто удалить вашу строку # 2? – Louis

2

Другой ответ хорош, но я думаю, что это можно сделать немного еще проще:

$ git checkout dev 
$ git reset --hard temp 

В первой команде, вы переводите на свой Dev отрасли.

Во второй команде вы указываете git, чтобы указать ветку dev на ту же фиксацию, на которую указывает ваша ветвь temp, и перезаписать индекс и рабочий каталог для соответствия.

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