2015-03-29 3 views
2

Когда я git rebase -i HEAD~4 я получаю что-то вроде этого:мерзавец перебазироваться не показывает слияние совершает

pick 7e2dd90 refactor some function 
pick dad8a9e fix another bug 
pick 4ba8c24 add another feature 
pick aca4ba3 do other stuff 
pick dd0b3e6 add feature 
pick 8dad92f fix bug 
pick 8571d0c stuff 
pick 25b328c whatever 
pick 1803bca demo commit 
pick 9723acc hello, world 
pick 3ff4212 blahblah 
pick c5c3bcf missed a file in merge 

Когда я git log я получаю это:

commit c5c3bcf0ac65d1423ddc2785b2f9ac3ecbd930d9 
Author: neubert 
Date: Sat Mar 28 22:11:08 2015 -0500 

    missed a file in merge 

commit 198bb3c61f62de47706fdfa3171bb79b4a0496a1 
Merge: cae37ae bb01002 
Author: neubert 
Date: Sat Mar 28 21:54:51 2015 -0500 

    Merge branch 'branchname' into anotherbranch 

    Conflicts: 
     path/to/filename.ext 

commit bb01002233f1eff5d42b6964e33830633f710ee1 
Merge: c8fe3c3 3ff4212 
Author: neubert 
Date: Sat Mar 28 21:03:17 2015 -0500 

    Merge remote-tracking branch 'athirdbranchname' 

commit 3ff4212b9291f2c863a742f5692ca7312b81decb 
Author: neubert 
Date: Tue Mar 24 13:40:42 2015 +0800 

    blahblah 

commit 9723acc8853c5fe7ea9bda4a9a711a3e07575c84 
Author: neubert 
Date: Tue Mar 24 13:38:56 2015 +0800 

    hello, world 

Мой вопрос ... почему не git rebase показывая слияния? Разве это не то, что он делает? Я бы хотел, чтобы squash «пропущенный файл в слиянии» совершил фиксацию слияния, но если я не вижу его с rebase, я не могу этого сделать.

Кроме того, не должно git rebase -i HEAD~4 дать мне четыре фиксации - не 12?

+5

Это поведение по умолчанию 'git-rebase'. См. Флаг '--preserve-merges' на странице [' git-rebase' man] (http://git-scm.com/docs/git-rebase). Что касается вашего второго вопроса, все зависит от формы вашего графика фиксации; помните, что '~' следует за первым родителем коммита. Если вы отредактируете свой вопрос и добавите вывод 'git log -graph -oneline -decorate', люди здесь смогут лучше объяснить ситуацию. – Jubobs

ответ

1

попробуйте выполнить git rebase -i HEAD~4 --preserve-merges. Это позволит вам увидеть фиксацию слияния, а также ограничить количество коммитов до четырех.

+0

Предупреждение из документации: «[--preserve-merges] использует внутреннее устройство -интерактивное оборудование, но явно не рекомендуется использовать его с опцией -интерактивной опцией, если вы не знаете, что делаете (см. ОШИБКИ ниже) «. – rlee827

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