#git #github
#git #github
Вопрос:
У меня есть ветка функций, которую я начал около 2 месяцев назад. Иногда я объединял в master свою функциональную ветку, чтобы убедиться, что она все еще будет работать с производственной площадкой. Теперь, когда я закончил, кто-то хочет видеть только ту работу, которую я проделал над веткой функций. Есть ли способ удалить слияния master, которые я сделал, чтобы diff содержал только мою работу над веткой функций?
Комментарии:
1. были ли конфликты во время слияний?
2. Почему они не могут проверить вашу функциональную ветку?
3. @OznOg нет, никаких конфликтов
4. @EncryptedWatermelon ветка функций на github теперь также показывает объединенные коммиты, поэтому трудно расшифровать, какие из них мои
5. Вы могли
git revert
бы объединить
Ответ №1:
У вас есть несколько вариантов. Поскольку это Github, проще всего было бы разместить вашу ветку в качестве черновика запроса на извлечение. Затем они могут использовать инструменты проверки Github для просмотра ваших изменений и коммитов.
Ваш рецензент может использовать обычные инструменты Git, чтобы просмотреть ваши изменения. При выборе редакции master..<your branch>
будут выбраны коммиты, доступные из вашей ветки, за исключением тех, которые доступны из master; это означает, что он будет ссылаться только на коммиты в вашей ветке. Он покажет коммиты слияния, но не то, что было объединено. Итак git diff master..<your branch>
, чтобы увидеть разницу и git log master..<your branch>
увидеть только ваши коммиты. Подробнее см. в разделе gitrevisions.
Если вы действительно хотите устранить слияния обновлений, вы можете перебазировать свои коммиты поверх master. Это эффективно перепишет вашу ветку, как если бы вы все время писали ее поверх текущей версии master. Могут быть конфликты. Хотя это хороший вариант для очистки вашей истории, я делаю это сам регулярно, очень легко запутаться. Я не рекомендую этот вариант, если вы все еще изучаете Git и у вас нет под рукой эксперта, который поможет вам разобраться с потенциальными проблемами.
Ответ №2:
Как правило, если ваша feature
ветвь была отделена develop
, например, вы бы сделали
git diff develop..feature
и увидеть общую разницу, вызванную feature
коммит, которые не включены develop
.
В качестве альтернативы, вы можете использовать тот же диапазон refspecs ( develop..feature
) для отправки git log
и получения самих коммитов. Я думаю, это зависит от вашего процесса проверки.
Редактировать после комментариев :
(отредактировано, мой ответ был неоптимальным, потому что выбор вишни вернул бы коммиты слияния. Перейдите к перебазированию, как предлагает Шверн)
Комментарии:
1. Спасибо! Есть ли способ удалить их, а не просто увидеть разницу в консоли?
2. Я не слишком уверен в том, что вы подразумеваете под этим … удалите их… из выходных данных, верно? (или из ветки?)
3. удалите их из ветки, а затем принудительно отправьте эту ветку функций на github, чтобы она правильно отражала только работу
4. Создайте новую ветку, которая совпадает с функцией (чтобы вы не нарушали ее), а затем при каждой фиксации, которая объединяет master
git revert <sha>
5. Вы также можете сделать это с помощью a
git rebase -I <sha_where_branched_from_master>
. Это будет чище в журналах. Обязательно создайте новую ветку, если вы это делаете. Это переписывает историю.