Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Переработать git на jun-3 #302

Open
olgaklimenko opened this issue Apr 1, 2021 · 28 comments
Open

Переработать git на jun-3 #302

olgaklimenko opened this issue Apr 1, 2021 · 28 comments
Assignees
Labels
backend Related to back-end developer roadmap frontend Related to front-end developer roadmap

Comments

@olgaklimenko
Copy link
Contributor

@antonkalinin-ml тут предложил разделить гит jun-3 и часть перенести на миддла. Создала отдельное ишью, так как тема shared.

В чеклисте по гиту тоже есть не очень практичные вопросы, которые больше про понимание принципов, или вопросы о редкоиспользуемых командах. Можно их передвинуть на мидла:

  • объектная модель и пак-файлы.
  • отчасти вопрос про three trees. Многие гит-клиенты не позволяют работать с индексом, и юзеру не нужно сталкиваться с ним. Тут все зависит от того, пользуются разработчики такими гит-клиентами или консолью.
  • git clean редко нужна. Она потенциально опасна тем, что удаляет файлы, которые никак не восстановить. Думаю, не будет ничего плохого, если джун не будет ее знать до поры.
  • filter-branch нужна крайне редко
  • ребейз непростая и опасная тема, я бы попробовал вынести на мидла, но если для вас это ежедневная операция, то не стоит.
  • отмена мерж-коммита - редко нужно и простого решения нет.
  • merge --squash, если только это не ежедневная операция. Сквошем легко злоупотребить и получить коммит на 20000 строк. С такими коммитами бисект бесполезен, и от истории коммитов толку мало.
  • Что такое Git workflow, какие знаете примеры? - вопрос слишком обширный и неконкретный. Джун не выбирает воркфлоу, он пользуется принятым на проекте. Джун едва ли будет выпускать релиз или поставку, ему не нужно знать тонкости, когда мержить релиз с мастером, откуда отводить хотфикс, где ставить теги и т.п. Я бы включил сюда более конкретные вопросы:
    • что такое ветка для доработки? Когда она создается и сколько времени живет? Что с ней происходит?
    • что такое интеграционная ветка? Какие они в принципе бывают?
    • опишите, как бы вы стали делать доработку в гите
    • можно ли мержить интеграционную ветку в свою ветку доработки? Когда и с какой целью?
    • можно ли мержить фичеветки? Какой в этом риск?
@Znack
Copy link
Contributor

Znack commented Apr 1, 2021

Ага, я в целом согласен. Там где на проекте активно ребейз используется и тд, то они индивидуально могут залететь в топик мидловский и ресурсы подсмотреть, но у нас таких немного

@chmnkh
Copy link
Contributor

chmnkh commented Apr 1, 2021

объектная модель и пак-файлы.

мой опыт может отличаться от опыта других людей, тут интересно, что другие скажут, но мне в своё время понимание этих вещей сильно развязало руки и придало уверенности в работе с гитом, потому что спала какая-то магическая пелена и я начал более точно понимать команды, которые я использую в ежедневной работе, в целом не считаю это каким-то рокет саенсом, предлагаю оставить как есть

отчасти вопрос про three trees. Многие гит-клиенты не позволяют работать с индексом, и юзеру не нужно сталкиваться с ним. Тут все зависит от того, пользуются разработчики такими гит-клиентами или консолью.

  1. любой поинт про "гит-клиенты" вообще на мой взгляд не имеет смысла, у нас речь все-таки про гит, а не гит-клиенты
  2. вопрос про three trees - это прелюдия к гит ресету, если обсуждать гит ресет, то надо и three trees обсудить, а резет - маст хэв, имхо

предлагаю оставить как есть

git clean, filter-branch редко нужны

согласен, не юзабельно практически, предлагаю выпилить

отмена мерж-коммита - редко нужно и простого решения нет.

гуглится в 5 секунд, не вижу смысла в карте держать, предлагаю выпилить

merge --squash, если только это не ежедневная операция. Сквошем легко злоупотребить и получить коммит на 20000 строк. С такими коммитами бисект бесполезен, и от истории коммитов толку мало.

ну что такое сквош полезно знать, использовать или нет - вопрос десятый, предлагаю оставить как есть

Что такое Git workflow, какие знаете примеры? - вопрос слишком обширный и неконкретный. Джун не выбирает воркфлоу, он пользуется принятым на проекте.

согласен, в зависимости от проекта флоу отличаться будет, и не джуну его выбирать
опять же предлагаемые вопросы тоже про какой-то конкретный флоу, мне кажется они тоже лишние

предлагаю выпилить и ничего не добавлять взамен

Итого: я не перечислил только вопрос про ребейз. Потому что всё, что я предлагаю - это выпилить некоторые действительно лишние вопросы. Остальные вопросы я бы оставил на месте, а переносить один ребейз - не очень.

@chmnkh
Copy link
Contributor

chmnkh commented Apr 1, 2021

в целом я не думаю, что "гит на миддле" - это вообще норм, потому что какие-то прямо сложные и редкие темы по гиту скорее всего по факту будут тупо мало юзабельны, а вопросам про всякие гит-флоу вообще место в какой-нибудь карте на тимлида, а не на нашем миддле, имхо

@antonkalinin-ml
Copy link
Contributor

объектная модель и пак-файлы.

мой опыт может отличаться от опыта других людей, тут интересно, что другие скажут, но мне в своё время понимание этих вещей сильно развязало руки и придало уверенности в работе с гитом, потому что спала какая-то магическая пелена и я начал более точно понимать команды, которые я использую в ежедневной работе, в целом не считаю это каким-то рокет саенсом, предлагаю оставить как есть

Кстати да, пожалуй, лучше оставить. Единственное, вопрос про пакфайлы хочется детализировать, чтобы человек не тратил на них много времени.

отмена мерж-коммита - редко нужно и простого решения нет.

гуглится в 5 секунд, не вижу смысла в карте держать, предлагаю выпилить

Легко гуглится git revert -m1, но это не вся информация, которую нужно знать. Мерж ревертнется, только будут проблемы при повторном мерже, нужно сделать ребейз мержимой ветки (а еще проще откатить мерж ресетом, если это не публичная ветка). Если мы не выносим часть вопросов на мидла, то я за то, чтобы оставить и дополнить вопросом: какие последствия могут наступить у реверта мерж-коммита и как их избежать. Это важная информация, она из серии "как не надо делать, чтобы не получить впоследствии крупные проблемы" - может, и не для джуна, но тем, кто много мержит, ее надо знать.

Что такое Git workflow, какие знаете примеры? - вопрос слишком обширный и неконкретный. Джун не выбирает воркфлоу, он пользуется принятым на проекте.

опять же предлагаемые вопросы тоже про какой-то конкретный флоу, мне кажется они тоже лишние

Все флоу, которые я знаю, основаны на ветках доработок и интеграционных ветках, куда все сливается в конечном счете. Про это я и хотел спросить, потому что это точно пригодится с любым флоу.

Плюс, хочется добавить вопросы, чтобы предостеречь людей от распространенных ошибок:

  • почему не стоит мержить в свою фичеветку чужую фичеветку - ты не знаешь, когда та фичеветка релизнется, и релизнется ли.
  • почему не любую интеграционную ветку можно мержить в свою фичеветку - можно случайно затащить в стабильный мастер мерж из какой-нибудь нестабильной интеграционной ветки, стейджинга, некста, который завели для тестирования.

Тут можно возразить, что такие косяки найдутся на ревью, однако ошибку легче предотвратить, чем исправлять, особенно если доработка большая. А еще не надо переоценивать эффективность ревью :). Ревьюер может не заметить подозрительную правку, которая просочилась в мерже из ветки, которую мержить было нельзя.

а вопросам про всякие гит-флоу вообще место в какой-нибудь карте на тимлида, а не на нашем миддле, имхо

А разве мержит только тимлид? На большом проекте может быть несколько человек с правом мержа. Даже если не мержишь, на определенном уровне желательно понимать, какие есть ветки в проекте, чтобы разобраться в истории гита - когда вышла такая-то доработка, вышел ли в прод такой-то багфикс и т.п.

@kelizarov
Copy link
Contributor

Согласен с Антоном по поводу реверта коммита. Мне кажется задавать вопрос нужно от обратного, аля "Как поступить если изменения в коммите нужно убрать с ветки?". Возможно ее и стоит оставить на джуне, но так чтобы не сильно упарываться в детали. Достаточно ответить на вопрос какие последствия приведут, если ревертнуть изменения не той командой.

@chmnkh
Copy link
Contributor

chmnkh commented Apr 15, 2021

Единственное, вопрос про пакфайлы хочется детализировать, чтобы человек не тратил на них много времени.

согласен

Если мы не выносим часть вопросов на мидла, то я за то, чтобы оставить и дополнить вопросом: какие последствия могут наступить у реверта мерж-коммита и как их избежать.

согласен оставить и дополнить

Все флоу, которые я знаю, основаны на ветках доработок и интеграционных ветках, куда все сливается в конечном счете. Про это я и хотел спросить, потому что это точно пригодится с любым флоу.

Если ты хочешь составить список абстрактных вопросов, которые под все флоу подойдут (ну или, по крайней мере, почти под все), у меня вопрос возникает: как к такой теме готовиться? я не вижу другого пути, кроме как изучить n конкретных гит флоу и оттуда вычленить какие-то абстрактные общие признаки, иного пути нет. Для меня это выглядит как перегрузка карты, потому что нюансы работы с гитом на конкретном проекте обговариваются в любом случае, а знать кучу гитфлоу джуниору не нужно точно, а на миддле это не маст хэв в карте, имхо

Плюс, хочется добавить вопросы, чтобы предостеречь людей от распространенных ошибок
почему не стоит мержить в свою фичеветку чужую фичеветку - ты не знаешь, когда та фичеветка релизнется, и релизнется ли.

не думаю, что это стоит добавлять, потому что тут каждый конкретный случай нажо смотреть и думать, исходя из ситуации, можно ли или нельзя так делать; нельзя в общем случае четко сказать, можно ли конкретную фичеветку мержить в другую сейчас или нет

почему не любую интеграционную ветку можно мержить в свою фичеветку - можно случайно затащить в стабильный мастер мерж из какой-нибудь нестабильной интеграционной ветки, стейджинга, некста, который завели для тестирования

сложно представить, чтобы кто-то таким начал заниматься) на моём опыте такого не было ниразу, тут надо думаю еще у людей спрашивать, если ты прямо иначе считаешь

А разве мержит только тимлид? На большом проекте может быть несколько человек с правом мержа. Даже если не мержишь, на определенном уровне желательно понимать, какие есть ветки в проекте

я говорил не о том, что только тимлид мержит, понимает, какие ветки есть впроекте, как устроен флоу на нём и так далее

я говорил о том, что знать конкретные гитфлоу, как организовать работу с гитом на конкретном проекте в конкретных условиях, вот это вот всё - это околоорганизационная, инфраструктурная работа, которая точно не на джуна, возможно на миддла (что именно на тимлида это повесил - в целом спорно, да)

@antonkalinin-ml
Copy link
Contributor

Для меня это выглядит как перегрузка карты, потому что нюансы работы с гитом на конкретном проекте обговариваются в любом случае

Я поработал на двух проектах (в metalamp), где ничего не обговаривалось. Подразумевается, что надо делать как все. Проекты своеобразные, конечно, но это реальная ситуация :).

Если ты хочешь составить список абстрактных вопросов, которые под все флоу подойдут (ну или, по крайней мере, почти под все), у меня вопрос возникает: как к такой теме готовиться? я не вижу другого пути, кроме как изучить n конкретных гит флоу и оттуда вычленить какие-то абстрактные общие признаки, иного пути нет.

Список вопросов, которые точно подойдут везде:

  • в какой ветке нужно начинать новую доработку или багфикс?
  • от какой ветки или на каком коммите ее нужно начинать? (Если скажет "мастер" - считаем за правильный ответ. В отдельных флоу это может быть не мастер, но суть в том, что это должна быть интеграционная ветка для активной разработки или релиза. В проекте скажут, откуда ответвляться).
  • как эти правки попадают в общую кодовую базу? (Мерж в мастер считаем относительно правильным ответом. Где-то это не мастер, где-то не мерж, а ребейз, но это детали.)
  • как узнать, какая версия кода проекта работает на проде?

Как готовиться: изучить какой-нибудь простой флоу с минимумом лишнего, где только ветка master и ветки доработок. Кажется, github flow таков. Только не git flow с его загонами.

Конкретный флоу неважен. Зная один, человек быстро разберется в остальных. Тем более, если он только пилит доработки, ему не надо разбираться в сортах мастеров и стейджингов, а если надо - спросит.

Я не уверен, что эти вопросы нужны. Мне кажется, нужны, но настаивать не буду - на самом деле, они несложные и учатся по ходу работы. Но, может быть, мне так кажется из-за опыта, а у кого-то будет другое мнение. Подождем отзывов.

@olegromashin
Copy link
Contributor

olegromashin commented Apr 16, 2021

Список вопросов, которые точно подойдут везде:

Имхо, такое на третьем джуне уже нет смысла спрашивать, разве что на 1 джуна, но это уже в новом ишью надо обсуждать. Единственное, последний вопрос не знаю (а надо?).

Я поработал на двух проектах (в metalamp), где ничего не обговаривалось.

Это узкое место самих проектов, карта здесь не при чём.

filter-branch я бы хотел оставить. изучается за 15 мин, но знание, что такая фича есть может быть сильно полезно в будущем.

Ребэйз тоже хотел бы оставить, если у нас топика на мидле не будет. Но я и не вижу смысла в ещё одном топике. А вообще, я думаю, ничего плохого, что в карте будет что-то, что сейчас не очень надо, но может пригодиться потом.

@chmnkh
Copy link
Contributor

chmnkh commented Apr 19, 2021

Я поработал на двух проектах (в metalamp), где ничего не обговаривалось.

мне кажется, что это организационный косяк на проекте, что если процессы нормально настроены, то объяснение гит флоу - это часть онбординга нового человека, и если на проекте с этим все нормально, то все необходимые нюансы должны обговариваться

это первый кейс: гит флоу есть, онбординга нет

второй кейс: нету гит флоу просто; это тоже, как я думаю, организационный косяк, который, как и в первом случае, должен фикситься в этой плоскости, а не картой

так что согласен с Олегом "Это узкое место самих проектов, карта здесь не при чём."

по поводу вопросов, согласен с Олегом, что дальше 1 уровня это не имеет смысла спрашивать

правда на 1 тоже не считаю это нужным, потому что это на практике выясняется довольно быстро и легко

  • в какой ветке нужно начинать новую доработку или багфикс?
  • от какой ветки или на каком коммите ее нужно начинать? (Если скажет "мастер" - считаем за правильный ответ. В отдельных флоу это может быть не мастер, но суть в том, что это должна быть интеграционная ветка для активной разработки или релиза. В проекте скажут, откуда ответвляться).

ответ на этот вопрос, что "это должна быть интеграционная ветка для активной разработки или релиза", по идее выясняется всеми новичками на первом же их проекте, а дальше - это уже здравый смысл, не сильно понимаю, зачем на это время на собесе тратить, т.к. абстрактный ответ - очень простой и его знают почти все, я думаю, кто хоть на 1 проекте работал, а конкретного ответа нету, т.к. везде по-разному

  • как эти правки попадают в общую кодовую базу? (Мерж в мастер считаем относительно правильным ответом. Где-то это не мастер, где-то не мерж, а ребейз, но это детали.)

то же самое: очевидный для всех людей с опытом >=1 проекта ответ

  • как узнать, какая версия кода проекта работает на проде?

у меня тоже сомнения, как и у Олега, зачем это надо, ну т.е. при необходимости это можно найти, а так, это не такая база, которая нужна прямо в карте, как по мне

на самом деле, они несложные и учатся по ходу работы. Но, может быть, мне так кажется из-за опыта, а у кого-то будет другое мнение. Подождем отзывов.

я полностью согласен с тем, что это все по ходу работы учится, и причем довольно легко, а добавление этого в карту - это трата времени кучи людей, которые будут это сдавать и принимать

а знания эти людьми будут получены независимо от того, есть ли это в карте или нет

@olgaklimenko
Copy link
Contributor Author

Подвожу тогда итоги:

  • Не удаляем никакие вопросы
  • Меняем вопрос про "какие гит workflow знаете", на вопрос про конкретный GitHub flow. (можно реурсы заменить на вот этот https://guides.github.com/introduction/flow/)

@olgaklimenko
Copy link
Contributor Author

olgaklimenko commented Apr 23, 2021

Тут же голосую за добавление вопросов:

  • отмена мерж-коммита (ресурс How to revert a faulty merge)

  • как запушить изменения после ребейза Git push rejected after feature branch rebase

  • про отличия git log и git reflog

  • перенести cherry-pick из раздела "изменения истории", т.к. он туда не относится

Плюс, мне показалось, что ресурс из Atlassian недостаточно подробный (мне не хватило, чтобы полностью разобраться) и я бы его заменила/или поставила на выбор с Pro GIT с указанием какие главы надо почитать.

@antonkalinin-ml
Copy link
Contributor

Меняем вопрос про "какие гит workflow знаете", на вопрос про конкретный GitHub flow. (можно реурсы заменить на вот этот https://guides.github.com/introduction/flow/)

Выше коллеги голосуют за выпиливание вопросов по git workflow. Я бы оставил, но из соображений "чтоб было" - странно иметь здоровый чеклист с вопросами по гиту, в котором ничего нет про воркфлоу. Но они и правда простые и изучаются на проекте. Кстати, ты, как человек, недавно это все изучавший, как считаешь, стоит ли их оставлять в списке?

@olgaklimenko
Copy link
Contributor Author

Я за то, чтобы оставить один простой воркфлоу как пример (гитхаб воркфлоу например), и не смотреть подробно в рамках карты другие флоу. Не хочется, чтобы вопрос в итоге превращался в копание в отличиях разных флоу, чтобы их нужно было запоминать и рассказывать. Нужно обозначить что есть разные флоу, разобрать 1 пример, чтобы было понятно - если встанет вопрос как организовать работу на проекте - человек знал, что надо пойти и почитать поподробнее.

@olgaklimenko
Copy link
Contributor Author

Есть еще один вариант, оставить вопрос и ресурсы на разные флоу, но не просить их пересказывать на сдаче подробно. Вместо этого ознакомиться с ресурсами и проанализировать, как организована работа на текущем проекте, насколько она близка к официальным флоу и хотелось ли бы что-то поменять после прочитанного. Такое рассуждение в стиле сдачи ремесла программиста.

@chmnkh
Copy link
Contributor

chmnkh commented Apr 26, 2021

чтобы было понятно - если встанет вопрос как организовать работу на проекте - человек знал, что надо пойти и почитать поподробнее.

организовывать работу на проекте - не ответственность джуна, он не должен этим заниматься

@olgaklimenko я не вижу других причин это в карте оставлять, если ты не согласна с этим, или с тем, что я выше написал, отпишись)

@olgaklimenko
Copy link
Contributor Author

Согласна, что джун не должен отвечать за это.

Мне приходит в голову аргумент, что не на каждый новый проект у нас ставят мидла, тимлида, техлида или еще кого-то, кто был бы ответственнен за это. Но если это учитывать, то третий джун разрастется до необъятных размеров :))

Так что я не против убрать этот вопрос совсем.

@iatsdotfatr
Copy link
Contributor

Как минимум, надо выпилить из ресурсов статью про gitlab flow, отвратительная статья, автору надо ознакомиться с пирамидой Минто.

@chmnkh
Copy link
Contributor

chmnkh commented Apr 26, 2021

@olegromashin

filter-branch я бы хотел оставить. изучается за 15 мин, но знание, что такая фича есть может быть сильно полезно в будущем.

я конечно вангую, но мне кажется, что если мы сейчас N разработчиков опросим, мы найдем очень маленький процент людей, которые юзали/юзают filter-branch

@olegromashin
Copy link
Contributor

я конечно вангую, но мне кажется, что если мы сейчас N разработчиков опросим, мы найдем очень маленький процент людей, которые юзали/юзают filter-branch

Возможно. Но я, например, уже успел пропустить кейс, где мог бы ей воспользоваться, но не знал, что так можно)

@chmnkh
Copy link
Contributor

chmnkh commented Apr 28, 2021

с Олегом поговорили, пришли к выводу filter-branch не добавлять, если кто-то считает иначе - велком

В итоге:

  • Выпиливаем: git clean, git filter branch, git flow.
  • Детализируем:
    • вопрос про пак-файлы, чтобы человек не зарывался в вопрос избыточно глубоко;
    • вопрос про реверт мержа: какие последствия могут наступить у реверта мерж-коммита и как их избежать.
  • Переносим вопрос про cherry-pick из изменения истории (Переработать git на jun-3 #302 (comment)).
  • Добавляем (Переработать git на jun-3 #302 (comment))
    • вопрос про git log (после вопроса про reflog); мне кажется явно тут спрашивать в чем отличия между логом и рефлогом избыточно, просто добавить после рефлога лог, и будет понятно; вообще, кстати, удивлён, что у нас лога нету в вопросах, странно.
    • ресурс про отмену мерж коммита https://mirrors.edge.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt
    • ресурс https://git-scm.com/book/en/v2, рядом с ресурсом от атлассиан

@chmnkh
Copy link
Contributor

chmnkh commented Apr 28, 2021

@olgaklimenko по поводу твоих предложений

как запушить изменения после ребейза Git push rejected after feature branch rebase

вопрос про форс пуш просто? звучит сильно просто, тогда не понятно, зачем это

Плюс, мне показалось, что ресурс из Atlassian недостаточно подробный (мне не хватило, чтобы полностью разобраться) и я бы его заменила/или поставила на выбор с Pro GIT с указанием какие главы надо почитать.

ну удалять Atlassian я бы не стал прямо, мне он нравится, например
Git-scm можно добавить рядом, вай нот, единственная причина, по которой его до сих пор нету, я думаю в том, что на него сложно не наткнуться, ища что-то по гиту) он первый в результатах гугла, как правило
ну я главы уточнять - я думаю что это лишняя работа какая-то: как и в случае с git-scm в целом, я не думаю, что найти конкретную нужную главу по нужной теме - это какая-то проблема

как обсудим это, я верхнее сообщение отредактирую, если что, пока эти пункты не стал добавлять)

@olgaklimenko
Copy link
Contributor Author

olgaklimenko commented Apr 28, 2021

вопрос про форс пуш просто? звучит сильно просто, тогда не понятно, зачем это

ага, я просто не обратила на это внимание при изучении, поэтому предложила добавить. Но вообще и в Atlassian и git-scm это есть в разделе про ребейз (я как-то проглядела просто на Atlassian эту инфу при подготовке), так что можно не добавлять.

Про ресурсы: давайте и то и другое положим рядышком на выбор (ок, без указания глав, там и правда не так сложно разобраться).

@chmnkh
Copy link
Contributor

chmnkh commented Apr 29, 2021

@olgaklimenko

как запушить изменения после ребейза Git push rejected after feature branch rebase

вопрос про форс пуш просто? звучит сильно просто, тогда не понятно, зачем это

а насчёт этого?

@olgaklimenko
Copy link
Contributor Author

отредактировала выше.

@chmnkh
Copy link
Contributor

chmnkh commented Apr 29, 2021

@olgaklimenko @kelizarov @antonkalinin-ml @stanislav-az #302 (comment)

здесь финальная версия с учетом всех обсуждений, полайкайте, если всё ок, или давайте дообсудим

@antonkalinin-ml
Copy link
Contributor

здесь финальная версия с учетом всех обсуждений, полайкайте, если всё ок, или давайте дообсудим

Раздумали удалять вопросы про гит воркфлоу? :) Не вижу этого пункта в посте.

Мне бы хотелось оставить filter-branch. Пусть она редко нужна и нюансы использования забудутся - ничего, для этого есть git help. Но полезно потратить на нее полчаса, чтобы знать, что такая команда есть и что она может помочь в определенных случаях:

  • много накоммитил с неправильным емейлом и надо исправить;
  • в репозитории живет несколько проектов в разных папках, которые хочется развести по разным репозиториям, не теряя истории;
  • вырезать из истории 2-гиговый бинарь, по ошибке закоммиченный на заре проекта, который теперь все вынуждены выкачивать, и из-за которого гит падает по нехватке памяти при некоторых операциях.

Все это случалось со мной и я успешно использовал filter-branch для исправления ситуации. И, к сожалению, видел случаи, когда люди могли бы использовать filter-branch, если бы знали про него, но они не знали, а потом приходилось разгребать последствия.

Это тема немного не для джунов, но у нас нет чеклиста по гиту для мидлов. Велик шанс, что человек так и не узнает про filter-branch. Детально изучать ее не надо, достаточно в ознакомительном режиме почитать одну статью в pro git.

@chmnkh
Copy link
Contributor

chmnkh commented Jun 22, 2021

Раздумали удалять вопросы про гит воркфлоу? :) Не вижу этого пункта в посте.

Не раздумали) 1 пункт в моём сообщении:

Выпиливаем: git clean, git filter branch, git flow.

По поводу filter branch:

моя позиция по поводу вопросов в карте следующая: поскольку знаний, которые разработчику нужны - много, то мы не можем просто всё, что полезно, в эту карту добавлять. В карте должно быть только самое необходимое.

Определить, что является "самым необходимым", а что не является, мы объективно не можем, поэтому тут вечно будут какие-то споры типа тех, что сейчас происходит.

Я сделал следующее: я обошел лично человек 12 околомиддловых разработчиков и задал им вопрос в духе "юзал ли ты фильтер бренч". Оказалось, что только лишь один Олег использовал фильтер бренч. Остальные - либо не использовали, но слышали, что такое есть, либо даже не слышали, и при этом все прекрасно существовали.

Я считаю, что проблемы, которые решает фильтер-бренч, достаточно специфичные, редкие, и отлично гугляться, пруфы:

много накоммитил с неправильным емейлом и надо исправить;

https://www.rockyourcode.com/fix-wrong-email-address-in-git/#alternative - 2 ссылка в гугле; запрос - git wrong email in commits

в репозитории живет несколько проектов в разных папках, которые хочется развести по разным репозиториям, не теряя истории

https://ao.ms/how-to-split-a-subdirectory-to-a-new-git-repository-and-keep-the-history/ - 1 ссылка в гугле, запрос - git split repository keep history

вырезать из истории 2-гиговый бинарь, по ошибке закоммиченный на заре проекта, который теперь все вынуждены выкачивать, и из-за которого гит падает по нехватке памяти при некоторых операциях.

https://docs.github.com/en/github/managing-large-files/working-with-large-files/removing-files-from-a-repositorys-history - 1 ссылка в гугле, запрос - git remove wrong file from history

По перечисленным причинам, я не думаю, что такому вопросу место в карте развития. Аргумент, что "это всего полчаса" не считаю аргументом, потому что вопросов много, и каждые полчаса, или 10 минут, потраченные на один вопрос, прекрасно аккумулируются) То, что кто-то плохо прогуглил, или тупанул, или еще что-то, и пришлось "разгребать последствия", ну да, такое может быть всегда, но не думаю, что это настолько частая ошибка, что стоит из-за этого расширять карту. Мне кажется, что если бы это достаточно часто случалось, это бы заметили.

Это моё финальное сообщение в данном топике, как будет приниматься решение - я хз, но мне добавить нечего больше :)

@alagunoff
Copy link
Contributor

Я сделал следующее: я обошел лично человек 12 околомиддловых разработчиков и задал им вопрос в духе "юзал ли ты фильтер бренч". Оказалось, что только лишь один Олег использовал фильтер бренч. Остальные - либо не использовали, но слышали, что такое есть, либо даже не слышали, и при этом все прекрасно существовали.

Вот это прям отличный пример, что filter-branch это специфический случай, которых просто тьма и если все добавлять в карту, то, скорее всего, разработчик никогда не сдаст на грейд :) За выпиливание filter-branch голосую тоже, в остальной диалог не закапывался. Ну а в целом, тема git на 3 джуна мне показалась неплохая и много полезностей вытащил из нее.

@antonkalinin-ml antonkalinin-ml added backend Related to back-end developer roadmap frontend Related to front-end developer roadmap labels Nov 28, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend Related to back-end developer roadmap frontend Related to front-end developer roadmap
Projects
None yet
Development

No branches or pull requests

9 participants