Ответы пользователя по тегу GitLab
  • Как сделать продакшн-билд без сорсов в рамках одного репозитория?

    Lobotomist
    @Lobotomist
    Software Developer
    Сначала отмечу пару моментов:

    1. Не храните в гите никаких производных от кода. То есть минифицированных скриптов, стилей и т.п. Они должны собираться из исходников на этапе билдинга и в них не должно внноситься никаких изменений - все изменения только в исходники.
    2. Вы написали, что заказчик может редактировать css и т.п. Тут нужно понимать, что это не часть вашего приложения и вашего кода. Это уже пользовательские данные и в репозитории проекта им не место. Если у вас есть желание их версионировать - вы можете использовать для них свой git репозиторий.

    > хочется иметь на проде только билд проекта - без исходников.

    Есть много способов это сделать. Как вариант, вы можете иметь на проде репозиторий проекта и при деплое использовать его для билдинга конкретного экземпляра системы. Тогда на самом сервере у вас исходники будут, причем можно будет легко получить любую версию, поскольку это репозиторий, но в экземплярах системы - только то, что необходимо. Либо вы можете на CI сервере билдить проект и уже готовый передавать на сервер.
    Ответ написан
    2 комментария
  • Будут ли удалены данные с branch если сделать git reset --hard?

    Lobotomist
    @Lobotomist
    Software Developer
    git reset влияет только на текущую ветку. Ветка это что? Указатель на какой-то коммит. git reset перемещает этот указатель. При этом, в зависимости от опций (--hard, --soft, --mixed) он по-разному работает с файлами в рабочей директории. Если используется --hard - переносится указатель и состояние рабочей директории тоже меняется и становится таким, какое оно в целевом коммите.

    То есть в вашем случае нужно:

    # Откат коммита слияния в мастере
    
    #перейти в мастер
    git checkout master
    # перенести указатель мастера на нужный коммит
    git reset --hard <первый коммит мастера>
    # запушить корректный мастер в origin
    git push -f origin master
    
    # Теперь откат ненужных коммитов в ветке task1
    
    # перейти в ветку task1
    git checkout task1
    # перенести указатель ветки на нужный коммит
    git reset --hard <good commit>


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

    Для спокойствия - поставьте тег на коммите слияния. Так вы всегда сможете вернуться к нему, даже если что-то сделаете не так.
    Ответ написан
    Комментировать