git merge пытается посмотреть на различия между точками M1 и C1 и на различия между точками M1 и C2 и объединить их вместе.
git rebase помещает вас в точку M2, затем применяет каждое из изменений от точки M1 к точке C2, которые также не были на пути к точке M2 в последовательности. Используя этот подход, он может лучше понять, что уместно, а что нет, поэтому многие вещи, которые кажутся конфликтами в подходе слияния, гораздо более очевидны для работы.
Хотя многим разработчикам нравится делать как можно меньше коммитов, git rebase работает лучше всего, когда каждый из коммитов был небольшим. Все это казалось мне волшебством, пока я не попытался сделать то же самое вручную в репозитории CVS. Изменение Coworker A, которое представляло собой всего лишь один коммит, было нелегко применить с концепцией rebase, потому что все это было одно. Но переключение на его обновление и применение к нему десятков крошечных коммитов Coworker B сработало очень хорошо, чтобы показать, что именно предназначалось для каждого обновления.
В Вашей функции обработчика событий ui.tab
элемент привязки. Можно получить его значение хэш-функции как это:
$("#tabs > ul").tabs();
$("#tabs > ul").bind("tabsshow", function(event, ui) {
window.location.hash = ui.tab.hash;
})
это работает на Вас?
Это было бы тем, для чего Вы идете?
$("#tabs > ul").tabs({
select: function(event, ui)
{
window.location = "#" + ui.tab;
}
});
$('#tabs').tabs({
select: function(event, ui){
window.location = ui.tab.href;
}
});
Похоже, что сам ui.tab не возвращает правильную строку. (вместо этого он возвращает undefined, поэтому можно сказать, что он вообще ничего не возвращает.)
Попробуйте поискать в dev-версии ui.jquery.js, есть ли там какие-либо возвраты, возможно, вам нужно вызвать дочерний элемент ui.tab; -)