Команды git которые стоит использовать: switch, restore, maintenance, worktree

Поделиться
HTML-код
  • Опубликовано: 12 июн 2024
  • С момента создания Git прошло уже почти 20 лет, однако многие в своей работе ограничиваются базовыми командами, представленными в первых версиях Git. Однако Git постоянно развивается и может предложить больше, чем add, commit, push и pull.
    В этом видео мы поговорим о 4 полезных командах, которые появились в последние годы в Git и которые стоит использовать, если они по какой-то причине прошли мимо вас: switch, restore, maintenance и worktree.
    Telegram канал: t.me/suchkov_tech
    0:00 Введение
    0:32 Switch
    4:24 Restore
    6:11 Maintenance
    8:39 Worktree

Комментарии • 59

  • @ReaktorGaming86
    @ReaktorGaming86 Месяц назад +2

    Очень хорошо объясняете, продолжайте в том же духе! Приятно слушать. Такое качество редкость для русскоязычного Ютуба.

  • @amandin.
    @amandin. 5 дней назад

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

  • @Sergey-wo3vu
    @Sergey-wo3vu Месяц назад +13

    git checkout -b branchname - сразу и создает ветку и переключается на нее. тем самым мы точно не забудем переключиться

    • @dimartyt
      @dimartyt Месяц назад

      Спасибо ❤

    • @dellenoam
      @dellenoam Месяц назад +1

      Можно также использовать git switch -c branch_name

  • @fatalien6634
    @fatalien6634 Месяц назад +9

    Хотелось бы увидеть как наиболее эффективно работать по git-flow
    ~~~
    Спасибо за видео. Оставляйте комменты чтобы продвинуть перспективный канал!

  • @evgenysamarin
    @evgenysamarin Месяц назад +5

    work tree кажется полезной, часто приходится переключать контекст, нужно попробовать на досуге, спс

  • @bsisow
    @bsisow Месяц назад

    Спасибо! Узнал много нового для себя.

  • @Devivl
    @Devivl Месяц назад

    Отличное видео. О worktree не знал. Спасибо.

  • @alexey9975
    @alexey9975 Месяц назад

    Здорово!

  • @user-artem-busyhin
    @user-artem-busyhin Месяц назад

    Спасибо 👍

  • @eliasbontiqa
    @eliasbontiqa Месяц назад

    Кайф, спасибо ))

  • @blender573
    @blender573 Месяц назад +1

    Ура, новое видео

  • @ICeMAn70833
    @ICeMAn70833 Месяц назад +1

    ❤‍🔥

  • @ryanlashkevich9615
    @ryanlashkevich9615 Месяц назад +5

    Alt + dot в терминале - можно вставлять последний аргумент предыдущей команды, и не вбивать по 10 раз feature/readme.

    • @megaman13able
      @megaman13able Месяц назад

      В маковском терминале не работает(

    • @ryanlashkevich9615
      @ryanlashkevich9615 Месяц назад

      @@megaman13able Очень жаль, а в Аrch и в Manjaro Linux работает на ура - zsh in XFCE terminal.

  • @meteor_jam
    @meteor_jam Месяц назад

    отличное видео. го k8s пж 😊

  • @DVKGroup
    @DVKGroup Месяц назад

    А что за шрифт в терминале? Красивый.

    • @suchkov-tech
      @suchkov-tech  Месяц назад +2

      шрифт Fira Mono for Powerline

  • @febreze2010
    @febreze2010 Месяц назад +1

    как настроить свой терминал чтобы была такая же удобная подсветка?

    • @suchkov-tech
      @suchkov-tech  Месяц назад +1

      я руководствовался этой статьей при настройке терминала на mac www.freecodecamp.org/news/jazz-up-your-zsh-terminal-in-seven-steps-a-visual-guide-e81a8fd59a38/
      про другие системы подсказать не могу

    • @febreze2010
      @febreze2010 Месяц назад

      @@suchkov-tech значит нужно Мак покупать ))))

    • @newsett1er
      @newsett1er Месяц назад

      Достаточно несложно делается через использование starship в любом относительно свежем эмуляторе терминала, например kitty

  • @eliasbontiqa
    @eliasbontiqa Месяц назад

    Если не секрет, что за тема в терминале?

    • @suchkov-tech
      @suchkov-tech  Месяц назад +1

      я использую iTerm2 + zsh + oh-my-zsh, на видео тема Agnoster.

    • @eliasbontiqa
      @eliasbontiqa Месяц назад

      @@suchkov-tech спасибо))

  • @user-zt3vr3hs7u
    @user-zt3vr3hs7u Месяц назад

    Суровые команды. Интересно, как много людей пользуются консольным гитом, а не всякими tui/gui для гита?

    • @newsett1er
      @newsett1er Месяц назад

      Немало

    • @investigate9584
      @investigate9584 Месяц назад

      Мне привычнее в консоли работать. В последнее время пытаюсь приучить себя к UI

    • @alexandershcheglov4653
      @alexandershcheglov4653 Месяц назад +2

      Я частично UI пользуюсь, частично терминалом. Через UI смотрю изменения в файлах, добавляю файлы (стейджу) и имя коммита пишу. Все остальное через терминал.

    • @ryanlashkevich9615
      @ryanlashkevich9615 Месяц назад

      Как минимум все те, кто засветились на конфе - ruclips.net/video/aolI_Rz0ZqY/видео.html - у Скота Чакона

    • @user-cb8nc5to4z
      @user-cb8nc5to4z Месяц назад

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

  • @ryanlashkevich9615
    @ryanlashkevich9615 Месяц назад +1

    Хм, не заметил преимуществ worktree перед stash-ем, больше действий требует производить.

    • @suchkov-tech
      @suchkov-tech  Месяц назад +1

      Создание отдельного рабочего дерева да, требует больше действий, stash в этом плане выигрывает. Но worktree можно создать один раз и больше не создавать для какой-то цели. По сути рядом будет лежать копия проекта, но слинкованная с основным. И после этого уже не надо создавать заново worktree, а просто каждый раз (будь то ревью или фикс) открывать в отдельном окне IDE ту версию и не сташить ничего.
      Мы на работе например пишем на go, проект достаточно разросшийся (такая увесистая монорепа), пользуемся кодогенерацией, но результаты этой генерации не пушим, и генерим отдельно. И каждый раз при переключении веток для локального запуска тестов надо заново делать генерацию, которая может занимать минуту и больше.
      Или же в процессе работы может быть поднят дебаг из исходного кода. Если работать тут же, а не в отдельном дереве, то надо тушить дебаг и заново потом поднимать.
      Но, возможно, в Вашем случае с процессами и языком который Вы используете worktree может и не дать преимуществ, тут все зависит.

    • @ryanlashkevich9615
      @ryanlashkevich9615 Месяц назад

      @@suchkov-techприкольно, надо будет разобрать. Это еще и быстрый переход в другую ветку, по cd)

    • @ILyaCyclone
      @ILyaCyclone Месяц назад +1

      ​@@suchkov-tech А в чём принципиальный выигрыш по сравнению с склонировать проект в отдельную папку и переключить ветку там? Если мы всё равно открываем новое окно ide.
      Ещё, на мой взгляд, упущено - считает ли гит новую папку, созданную через worktree, как незакомиченное изменение в оригинальной ветке.

    • @suchkov-tech
      @suchkov-tech  Месяц назад +1

      @@ILyaCyclone я бы выделил два основных преимущества.
      Первое - это размер. Если клонировать отдельную копию, то занимать ровно столько же места. Если Вы пользуетесь worktree, то полная копия не создается - это все части одного репозитория.
      На моем рабочем примере:
      ```
      $ du -hs api/.git
      1.4G api/.git
      ```
      и
      ```
      $ du -hs api-worktree-hotfix/.git
      4.0K api-worktree-hotfix/.git
      ```
      разница существенная.
      Второе - эти две части гит репозитория знают друг о друге, в отличие от независимого клонирования. Если я подтяну свежий мастер в api, и перейду потом в api-worktree-hotfix и отбранчуюсь от мастера там - я отбранчуюсь от свежей версии мастера. То есть мне не нужно отдельно управлять и освежать основные ветки (develop и master) - достаточно сделать в одном из пространств

    • @user-cb8nc5to4z
      @user-cb8nc5to4z Месяц назад

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

  • @vovka_goodwin
    @vovka_goodwin Месяц назад +1

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

    • @ryanlashkevich9615
      @ryanlashkevich9615 Месяц назад +1

      Ты еще не дорос просто

    • @vovka_goodwin
      @vovka_goodwin Месяц назад

      @@ryanlashkevich9615 это все аргументы в пользу командной строки?) Или я не дорос знать как это будет работать на винде?)

    • @vovka_goodwin
      @vovka_goodwin Месяц назад +2

      @@ryanlashkevich9615 Ну я склонен считать что перерос)

    • @ryanlashkevich9615
      @ryanlashkevich9615 Месяц назад

      @@vovka_goodwin видимо имелся ввиду ввиду возраст. Приведу пример, в любой IDE можно посмотреть историю файла - команда такая: git log --follow /path/to/file. Но ни в одной IDE нельзя искать коммиты, которые редактировали конкретные диапазоны строк или строковые литералы: git log -L1,10 /path/to/file. По литералам: git log :"function_name" /path/to/file (кажется так). Зная эти команды (или даже написав удобный алиас на них, чтобы не превратиться в пианиста), можно быстрее искать нужные коммиты.
      Сойдемся на том, что терминальное гитоводство - вопрос предпочтений.)

    • @andrewyupetrov
      @andrewyupetrov Месяц назад

      Кому-то значит интересно. Торвальдс ещё гитом занимается?

  • @galaxy-user
    @galaxy-user Месяц назад +6

    Первый кейс заменить на git checkout -b "new-branch"

    • @tricotazh
      @tricotazh Месяц назад +2

      git switch -c new_branch

    • @GigaMozg
      @GigaMozg Месяц назад

      Как поставить 10 дизлайков на этот комментарий?

    • @tricotazh
      @tricotazh Месяц назад +2

      @@GigaMozg с 10 аккаунтов

  • @TsArtemi
    @TsArtemi Месяц назад +1

    как же я оказывается отвык за последние пару лет от ветки master 😂 интересно остались ли западные компании не переименовавшие её в main 🤔

  • @drak0an
    @drak0an Месяц назад

    Неи никакиз дополнительных проверок данных у команды switch. Это сетевой миф. Читайте доки.

    • @suchkov-tech
      @suchkov-tech  Месяц назад +1

      возможно я не правильно был понят: команда switch обрывает выполнение операции если это может привести к потере данных.
      "The operation is aborted however if the operation leads to loss of local changes, unless told otherwise" git-scm.com/docs/git-switch