Насколько умный git в ребазинге в python?

В настоящее время я экспериментирую с git и столкнулся со следующей проблемой. Я создал файл python с одной функцией с именем f1, сохранил его в main.py и передал его в основную ветку. Затем я создал ветку с именем b1 этого, вернулся к мастеру и изменил имя этой функции на f2 (никаких других изменений). Вернувшись в ветку b1, я добавил вторую функцию new_function. После этого я попытался перебазировать b1 на master.

Я был удивлен, увидев, что произошел конфликт. Почему я не вижу, что я просто изменил имя f1 на f2 в мастере?

Я делаю что-то не так? Любые предложения приветствуются.

2 ответа

Git - как и почти любой другой VCS - не знает симанитов отслеживаемого контента, поэтому не может догадаться, что конфликтует, а что нет. Если вы объединяете или перебазируете две истории, которые изменили один и тот же файл, это конфликт, и вам нужно разрешить его. Используйте для этого подходящий инструмент (например, P4Merge, лучший бесплатный инструмент сравнения / слияния, который я знаю), и он легко разрешает конфликт, или в вашем случае вы видите, что, возможно, нет даже реального конфликта.

Вы не делаете ничего плохого. Git просто предотвращает любую потенциальную потерю вашей работы. На данный момент, так как функция f1 был изменен на f2 в вашем master филиал - ваша ветвь b2 до сих пор относится к нему как f1, Итак, когда вы делаете git rebase, Git просто спросит вас "так какое имя вы хотите, чтобы это было f1,f2 или что-то другое.

Другие вопросы по тегам