Плохая идея использовать squa sh слияния при объединении двух длинных ветвей.
Когда вы открываете запрос на извлечение, GitHub показывает изменения в вашей ветке из базы слияния (которая обычно общий предок) между вашей веткой и базовой веткой (ветка, в которую вы просите объединиться). Если вы используете обычные коммиты слияния, это, как правило, самый последний коммит слияния в обеих ветвях.
Однако, когда вы создаете слияние sh, вы берете свой код и применяете его как один коммит без использования фиксации слияния. Git не знает, что старые версии вашей ветки были применены к master
, потому что между ними нет новой общей истории. Поэтому, когда GitHub отправляется на вычисление самого последнего общего предка, который будет отображаться между вашей веткой и master
, он будет таким же, как и всегда (это точка, в которой ваша ветка была изначально создана), и показывает все коммиты, которые когда-либо существовали в вашей ветви.
Самый простой способ решить эту проблему - использовать новую ветку topi c для каждого элемента, который вы хотите объединить. Второй самый простой способ - каждый раз воссоздавать ветку из master
, используя git checkout -B master_wes master
, что сбрасывает ветку так же, как master
(и уничтожает любые изменения в ней). Возможно, вам придется принудительно заставить pu sh вашу ветку, если вы делаете последнее, если только вы не удалили ветку на сервере при слиянии.
Вы также можете избежать использования squa sh merges (что я настоятельно рекомендую в любом случае) ), которая решит вашу проблему с пользовательским интерфейсом, но продолжая сливать одну и ту же повторно используемую ветвь снова и снова без ее сброса, как правило, делает историю немного корявой (и приводит к тому, что некоторые операции становятся излишне медленными), поэтому я не рекомендую делать это .