Ответы пользователя по тегу Git
  • Как в Git в организовано хранение файлов?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1. Гит в истории целые файлы, уже измененные, но сжатые (изменения хранит SVN, но у него другая модель работы)
    2. Сравнение файлов происходит через сравнение хэша файла. История изменений хранится в виде графа, поэтому переключение - это по сути: 1. Найти общего предка 2. Откатиться до этого предка 3. Применить изменения до новой ветки. Дополнительно, если у тебя есть незакоммиченные текущие изменения, то гит тебе об этом скажет
    3. Скачивается вся история изменений из удаленного репозитория и потом HEAD выставляется на ветку, которую клонировал (в основном это main/master)

    Почитай как работает git

    UPD: спасибо Saboteur за важное замечание
    Ответ написан
    1 комментарий
  • Можно ли сделать git merge, чтобы в главной ветке появился только коммит слияния?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1. git merge feature --squash
    2. git commit

    Проблему решает --squash флаг при merge, только останется закоммитить это дело
    Ответ написан
    Комментировать
  • Как настроить слежение за внешней веткой Git, чтобы сделать git pull?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    То есть должен забирать с dev но пушить в свои ветки по названиям.

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

    Делай отдельную ветку для фичи/экспериментов, а если нужны обновления, то git merge
    Ответ написан
    Комментировать
  • Как правильно мержить в main из dev, если там есть незаконченные фичи?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Решение более правильное - не делать так. Мержить надо когда все работает, а если есть неработающий функционал, то:
    - Либо комментировать функциональность которая еще не работает
    - Либо сделать эту функциональность доступной через фича-флаги. Эти флаги соответственно никто не должен выставлять
    - Либо мержить только работающие ветки, а та, в которой не работает/не закончена - в нее мержить уже готовую мастер ветку

    Мержить через cherry-pick - такое себе: одна ошибка и ты ошибся (фатально)
    Ответ написан
    Комментировать
  • Как правильно работать с ветками?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Для пет проекта достаточно 2 веток - master и dev:
    - master - работающий код, красивый, причесаный
    - dev - в нем ведется вся работа

    Нет смысла упарываться во всякие git flow, github flow и еже с ними. Над проектом работаешь ТОЛЬКО ТЫ, а значит делать надо как тебе удобнее.
    Думать об этом надо только если над одним проектом работает больше 1 человека.

    P.S. можно и одной веткой обойтись, но так удобнее откатываться и точно знаешь, что рабочий код не затронется
    Ответ написан
    Комментировать
  • Как сделать исключение в .gitignore?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Используй -f ключ:
    git add -f states/project1/keys/pk1.pub

    Если файл игнорируется, то git add не будет делать автодополнение (в моем случае есть плагин для git - он не работает). Но однажды добавив его - изменения будут отслеживаться
    Ответ написан
    Комментировать
  • Есть ли способ инициализировать репозиторий для дочерней папки?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    в самом /www/sitefolder создать .gitignore в котором будет * (только астериск)
    Тогда никакие файлы из этой и ниже лежащих не будут отслеживаться, но гитом можно будет пользоваться
    Ответ написан
  • Почему не удаляется .env в github?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    git rm --cached .env
    Ответ написан
    Комментировать