TGViewer
Одержимый кодом🔥 Одержимый кодом🔥 @cutcode · 343 subscribers
Post #80 685
🚀 Как случайный коммит сломал мне `git subtree`

Если вы, как и я, новичок в монорепозиториях и git subtree — вот реальная история, которая может сэкономить вам пару часов жизни.

В MoonShine мы используем монорепу, и каждый пакет (`src/UI`, src/Core и т.д.) синхронизируем с внешними репами через subtree.

Как-то я по-быстрому поправил README прямо в split-репозитории (`moonshine-software/ui`) — и после этого CI перестал работать. git subtree push начал падать, subtree pull выкидывал конфликты. Почему? Потому что история коммитов в split-репо разошлась, и subtree отказался это мержить.

🤕 Недавно ситуация повторилась: по определенной причине (привет, Dependabot) в split-репо снова появился внешний коммит — и всё сломалось.

В этот раз я быстро вспомнил, что делать:

🛠 Решение: просто сплитим содержимое в ветку и форсим пуш (сделал себе готовый скрипт):


#!/bin/bash

set -e

REPO_NAME=$1
FOLDER_NAME=$2

REMOTE_REPO="git@github.com:moonshine-software/${REPO_NAME}.git"
REMOTE_BRANCH="3.x"
LOCAL_PREFIX="src/${FOLDER_NAME}"
TMP_BRANCH="repair-split-${REPO_NAME}"

git subtree split --prefix="$LOCAL_PREFIX" -b "$TMP_BRANCH"
git push --force "$REMOTE_REPO" "$TMP_BRANCH:$REMOTE_BRANCH"
git branch -D "$TMP_BRANCH"



📚 Выводы:

1. 🛡 Если split-репо — read-only, защитите ветку от ручных пушей
2. 🤖 Делайте sync только из монорепы через subtree split + push --force
3. ❌ subtree pull — это минное поле. Лучше не использовать в CI.


Надеюсь, кому-то это сэкономит время ✌️
  • 👍 13
  • ❤ 3
  • 😱 3
More from @cutcode
  1. Sep 22, 2026Post #131
  2. Sep 11, 2026Но все еще скидка 15% по промокоду CUTCODE-26!
  3. Sep 11, 2026Пыхник’26 — 2 октября расскажу про осознанное использование AI. Скидка 15% по промокоду CU…
  4. Sep 11, 2026Теперь документация по Laravel пишется для ИИ-агентов. И скорей всего ИИ-агентами 😁
  5. Sep 11, 2026Топ-1 преимуществом Laravel всегда была документация. Теперь она будет для агентов. Помяне…
  6. Sep 9, 2026Пыхник’26 — целая неделя PHP! С 28 сентября по 2 октября пройдёт Пыхник’26 — онлайн-конфер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →