Задать вопрос
  • Как сделать доставку изменений на сервер?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    То, что вам нужно называется "Система доставки и развёртывания" или "CI/CD". Работает следующим образом:
    1. На Git сервере создаётся репозиторий - Github, GitLab и прочие сервисы (есть простые и лёгкие варианты для хостинга на своём сервере)
    2. На сервере в разделе CI/CD настраиваете пайплайн на пуш или пулл-реквест в репозиторий: обычно это запуск скрипта или нескольких в докере
    3. При наступлении данного события сервер запускает пайплайн

    Обычно пайплайн состоит из нескольких шагов:
    1. Сборка
    2. Тестирование
    3. Доставка
    4. Развёртывание

    В зависимости от особенностей проекта число шагов может меняться. Для доставки и развёртывания есть два стандартных метода:
    • CI/CD агент на сервере, который выполняет нужные скрипты в контексте оболочки сервера
    • Скрипт, который подключается к целевому серверу по SSH и через него же передаёт нужные файлы (артефакты - в контексте CI/CD процессов).
    Ответ написан
    Комментировать
  • Можно ли пользоваться двумя аккаунтами в Gitlab одновременно?

    Опишу, как это сделать на Маке и Линуксе. Про Винду даже не спрашивайте, уже лет 7 как не помню.

    Для работы с двумя аккаунтами GitLab с одной машины требуется настроить Git для использования разных SSH-ключей. Каждому аккаунту будет соответствовать свой ключ.

    1: Создание отдельных SSH-ключей

    Для каждого аккаунта GitLab необходим уникальный SSH-ключ. Если стандартный ключ (`~/.ssh/id_rsa`) уже существует, его можно оставить для первого аккаунта. Для второго аккаунта создаётся новый.

    В терминале выполняется команда для генерации нового ключа. В ней `"email_второго_аккаунта@example.com"` заменяется на почту, привязанную ко второму аккаунту GitLab. При запросе имени файла нужно указать уникальное имя, чтобы не перезаписать существующие ключи.

    # Имя id_gitlab_work можно заменить на любое другое
    ssh-keygen -t ed25519 -C "email_второго_аккаунта@example.com" -f ~/.ssh/id_gitlab_work


    В результате у нас будет две пары ключей:

    • `~/.ssh/id_rsa` и `id_rsa.pub` (для первого аккаунта)
    • `~/.ssh/id_gitlab_work` и `id_gitlab_work.pub` (для второго)


    2: Добавление SSH-ключей в аккаунты GitLab

    Далее публичные части ключей (`.pub`) добавляются в соответствующие аккаунты GitLab.

    Для первого аккаунта это будет ~/.ssh/id_rsa.pub
    Для второго аккаунта ~/.ssh/id_gitlab_work.pub

    Кликаем на аватарку в gitlab, выбираем "Edit Profile" и в секции "SSH Keys" обоих аккаунтов добавляем соответствующие им публичные ключи

    3: Настройка SSH-клиента

    Чтобы система знала, какой ключ для какого репозитория использовать, настраивается файл конфигурации SSH. В нём создаются псевдонимы для `gitlab.com`.

    1. Нужно открыть или создать файл `~/.ssh/config`.

    Если его нет, создаём:
    touch ~/.ssh/config

    2. Открываем файл, добавляем конфигурацию, которая создаёт два «хоста», `gitlab.com-personal` и `gitlab.com-work`, которые оба ссылаются на `gitlab.com`, но используют разные файлы ключей.

    # Первый аккаунт (например, личный)
    Host gitlab.com-personal
      HostName gitlab.com
      User git
      IdentityFile ~/.ssh/id_rsa
      IdentitiesOnly yes
    
    # Второй аккаунт (например, рабочий)
    Host gitlab.com-work
      HostName gitlab.com
      User git
      IdentityFile ~/.ssh/id_gitlab_work
      IdentitiesOnly yes


    4: Настройка локальных репозиториев

    Теперь необходимо обновить URL-адреса удалённых репозиториев в локальных проектах, чтобы они использовали созданные псевдонимы.

    1. В директории проекта для первого аккаунта выполняется команда для изменения URL.
    Проверить текущий адрес: git remote -v
    Заменить `gitlab.com` на псевдоним gitlab.com-personal:

    git remote set-url origin git@gitlab.com-personal:username/repo.git


    2. В директории проекта для второго аккаунта выполняется аналогичная команда, но с другим псевдонимом:

    git remote set-url origin git@gitlab.com-work:otheruser/other-repo.git


    При клонировании новых репозиториев следует сразу использовать адрес с нужным псевдонимом:

    # Клонирование с первого аккаунта
    git clone git@gitlab.com-personal:username/repo.git
    
    # Клонирование со второго аккаунта
    git clone git@gitlab.com-work:otheruser/other-repo.git


    5: (Рекомендуется) Настройка автора коммитов

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

    В репозитории для первого аккаунта:

    git config user.name "Имя для первого аккаунта"
    git config user.email "email_первого_аккаунта@example.com"


    В репозитории для второго аккаунта:

    git config user.name "Имя для второго аккаунта"
    git config user.email "email_второго_аккаунта@example.com"


    После завершения настройки, при выполнении `git push` из разных директорий, Git будет автоматически использовать соответствующий ключ и данные автора.
    Ответ написан
    1 комментарий
  • GIT для 1C-Bitrix, как наладить процесс разработки?

    cyber-jet
    @cyber-jet
    Разработку рекомендуется вести в папке local, она может переопределят всё что есть в папке bitrix - почитать тут

    PS: Вообще это относится к документации по организации разработки там-же можно почитать про организацию контроля версий, композер.
    Ответ написан
    Комментировать
  • MacBook Pro 16 i9 в 2025 году актуален ли?

    xez
    @xez
    TL Junior Roo
    MacBook Pro 16 i9

    Большой, тяжелый, медленный, от батареи будет жить часа 2, максимум.

    Для музыки, скорее всего, вам подойдет даже эир.
    Брать только на процессоре M серии.
    SSD на современных маках заменить нельзя.
    Можно пользоваться внешним.
    Ответ написан
    3 комментария
  • Зачем proxmox стартует виртуальные машины во время резервного копирования?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ну, если делается снапшот, то нормально. Останавливаем виртуалку, делаем снапшот диска, запускаем виртуалку, спокойно бэкапим диск со снапшота, удаляем снапшот. Получаем малое время простоя ценой небольшого дополнительного объёма диска.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы при merge не выполнялось слияние определённых файлов?

    @shushara4241
    Храните просто оба файла конфигурации. Либо создайте сабмодуль, в которой создайте ветки для каждого конфига, которые не будут сливаться друг с другом. Либо храните в конфигурации значения и для дева и для прода. Например для прода с префисом PROD_
    Ответ написан
    Комментировать
  • Как сделать так, чтобы при merge не выполнялось слияние определённых файлов?

    @Everything_is_bad
    я зря мучаюсь и просто не нужно хранить конфиги в репозитории?
    да, ты зря мучаешься, на дворе 2025 год, "Двенадцать факторов", где это всё давно разжевано, появилось лет 10-15 назад.
    Ответ написан
    5 комментариев
  • Можно ли как-то откатить локальный репозиторий до локального коммита?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Как-то - можно, если вы зафиксировали изменения, конечно - а, как вы пишете, вы их зафиксировали.
    Для начала, посмотрите, что вы там делали, с помощью git reflog: там зафиксированы и коммиты, и переключения веток. Думаю первых десяти записей (git reflog -10) вам хватит, если нет - увеличьте число в команде.

    Скорее всего, вы быстро увидите название ветки, с которой переключились на main, после вы этого сможете переключиться обратно на нее с помощью git checkout.
    Ответ написан
    1 комментарий
  • Как сделать лицензию для GitHub частичной?

    Предположим, что на гитхабе есть какой-то проект A с лицензией X.
    В лицензии X написано, кто, как, и на каких условиях может использовать проект A.
    Ты делаешь проект B в котором используется A - ты обязан соблюсти все условия, которые написаны в лицензии X (а они вполне могут запрещать в принципе это).
    Ты в любом случае сохраняешь все авторские права на код в твоём проекте B, так как это твой код.
    При этом лицензия X вполне может влиять на то, какую лицензию ты сможешь указать для своего проекта. Например она может обязать тебя распространять B только под X, или добавить какие-нибудь требования типа обязательного открытия исходников или уведомления разработчика проекта A.
    Ответ написан
    2 комментария
  • Как скачать все ветки если Git их не видит?

    dimasmagadan
    @dimasmagadan
    я, конечно, не куратор тега git, но крайне удивлен, что никто не предложил
    git clone --mirror

    https://git-scm.com/docs/git-clone#Documentation/g...

    и ограничить скорость
    git config --global http.postBuffer 524288000
    git config --global http.lowSpeedLimit 1000
    git config --global http.lowSpeedTime 60
    Ответ написан
    8 комментариев
  • Стоит ли Vim своего внимания для frontend-разработчика?

    @psychedelicGeek
    Любитель программировать
    Я использую Vim как Full Stack разработчик, скажу даже, что я все проекты разрабатываю на нем практически.
    Я подключил плагины, подключил туда YouCompleteMe, LSP и теперь у меня как свой VSCode, сменил оформление vim, подключил git плагин к нему, настроил .vimrc и теперь я не знаю проблем.

    На данный момент мне захотелось что то от себя добавить, и я решил поизучать VimScript.

    Вдобавок к Vim, я использую и Neovim, штука тоже хорошая.

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

    Экономит ли время? Да, лично для меня.
    Я практически мышку не использую, а так бывает от мышки часто рука побаливает долгим пользованием, то я вообще забыл про нее.

    Хочу добавить, что я еще и сисадмин, и для меня Vim и Nano это базовые вещи на сервере
    Ответ написан
    4 комментария
  • Как правильно настроить копирование в вставку в MAC?

    [option] + перетащить папку.
    Тогда диалог предложит, помимо вариантов Stop и Replace, третий вариант Merge.
    67726a4fa0465693130234.png

    Тест
    Две папки A и B:
    скрин
    67726ab7abffa441259732.png

    A
      A_a
        A_a_a
          text.txt
          other.txt
          only-A.txt
    
    B
      A_a
        A_a_a
          text.txt (обновлен)
          other.txt (без изменений)
          only-B.txt

    Зажать Option и перетащить из B папку A_a внутрь папки A. Появляется этот диалок с вариантом Merge.
    Ответ написан
    4 комментария
  • Как настроить маршрутизацию трафика с использованием двух сетевых карт для выхода на перечень адресов (сайтов) ТОЛЬКО через одну сетевую карту?

    @Akina
    Сетевой и системный админ, SQL-программист.
    1) как сделать так, чтобы через "Сеть 2", "рабочая" (Wi-Fi) шёл трафик ТОЛЬКО на определённые сайты/адреса (в принципе, список IP-адресов почти весь есть), и 2) весь остальной трафик шёл ТОЛЬКО через "Сеть 1" (ethernet), и, соответственно, никак не попадал в "Сеть 2"?

    Оставляем Default gateway только через тот роутер, который "Сеть 1" (ethernet). На втором сетевом соединении шлюза по умолчанию быть не должно.
    Прописываем частные маршруты на "ТОЛЬКО определённые сайты" через роутер в "Сеть 2", "рабочая" (Wi-Fi). Если к этим сайтам выполняется обращение по именам - все имена занести в файл HOSTS.

    Всё собственно.

    как оградить "Сеть 2" от попадания в неё трафика из "Сети 1"?

    Убедиться, что служба "Маршрутизация и удалённый доступ" - остановлена.

    не совсем разобрался с метриками в Windows (установлена Win10) - какие параметры нужно задавать для каждой из этих 2 сетей?

    Забудь, это не твой случай.
    Ответ написан
    2 комментария
  • Как запустить Proxmox внутри vm с минимальным оверхедом?

    @Drno
    Это надо запускать на голом железе, иначе будет плохо работать

    наверно единственный логичный вариант это использовать в проксмокс не ВМ тогда, а LXC контейнеры
    Ответ написан
    Комментировать
  • Как в GitHub выполнить поиск в коде по ключевому слову?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Просто вбить в поиск в поисковой строке находясь в данном репозитории и гитхаб автоматически будет искать в данном репозитории. Нет, ну серьезно, неужели вам было настолько лень вбивать искомую строку в поиск, что вы сделали скриншот, пошли на форум, запостили вопрос и добавили скриншот???
    spoiler
    670adc8143fd7776201456.png
    Ответ написан
    4 комментария
  • Как работать с проектом на git в phpStorm на тестовом сервере?

    Henryh
    @Henryh
    Веб-программист
    Попробуй посмотреть в сторону CI/CD подхода.
    Условно, это когда некий скрипт мониторит изменения, которые ты запушил в репу. И автоматически (или по кнопке) запускает процесс заливки на нужный сервер (тестовый и/или прод). Туда же можно добавить прогон тестов и сборку.

    Тоесть процесс будет например такой: локальные правки -> пуш в ветку разработки репозитория -> синк с тестовой средой -> если всё ок - пуш в мастер -> синк с продом.

    Есть много решений, можно начать с GitHub Actions
    Ответ написан
    Комментировать
  • Формируя Readme-файл, если это WPF-проект, то что минимум нужно конечному юзеру и программисту, чтобы его запустить?

    yarosroman
    @yarosroman
    C# the best
    https://learn.microsoft.com/ru-ru/dotnet/core/depl...

    Читаем "публикация автономных приложений"
    Ответ написан
    Комментировать
  • Как сделать файл бинарным для гита?

    Lynn
    @Lynn
    nginx, js, css
    Ответ написан
    Комментировать
  • Почему не подгружаются стили на GitHub Pages?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    У всех файлов с ошибкой есть нижнее подчеркивание в названии. Судя по этому ответу на SO, Jekyll ломает поведение.
    Попробуй создать файл .nojekyll (даже пустой) в корне репозитория
    Ответ написан
    1 комментарий