2013-09-05 4 views
3

Git time! Моя ветка master идет в последний раз. Я проспал и не создал ветку для моих незначительных исправлений и совершил некоторые коммиты. У меня есть это:Очистка мелких коммитов на главной ветке

(R1)<---(R2)<---(c1)<---(c2)<---(c3)    master 
Rx - releases 
cX - some fixes 

Я хотел бы иметь что-то вроде этого на отдельной ветке:

(R1)<---(R2)          master 
      \ 
      \<---(c1)<---(c2)<---(c3)    last-fixes 

И следующий слияние это к master с --no-ff:

(R1)<---(R2)<-------------------------(R3)  master 
      \      /
      \<---(c1)<---(c2)<---(c3)/   last-fixes 

Как сделать это в простых шагах?

ответ

7

Вы можете сделать новый филиал в вашей текущей позиции, сброс master к предыдущей фиксации, а затем объединить его с --no-ff

git branch last-fixes 
git reset R2 --hard 
git merge last-fixes --no-ff 
+4

бить меня к нему. Также помните, что это изменение истории мастера, и если ведущая ветвь была нажата на удаленный, это вызовет проблемы. – Schleis

+0

Это мое дело. Я уже оттеснил материал на удаленный, но я всего лишь один человек в проекте. Могу ли я просто сделать git push -f после этого изменения? – flyer

+1

@flyer Да, вы можете это сделать. Так как вы единственный, кто в данный момент обращается к пульту дистанционного управления. Если это не так, вы не хотите этого делать. – Schleis

1

Во-первых, убедитесь, что вы находитесь на мастер отрасли.

git checkout master 

Затем создать ветку для исправления

git branch last-fixes 

Теперь сбросить мастер, где он должен быть

git reset --hard <R2> 

И вы можете объединить ваши слияния

git merge --no-ff last-fixes 
Смежные вопросы