Skip to main content

rebase-to-main

Rebase the current branch onto latest main and force-push. Invoke whenever the user asks to rebase, bring a branch up to date, resolve rebase conflicts, or push after a rebase. Handles .deps/ conflict resolution, license regeneration, and forbidden-trailer cleanup — all the che-dashboard-specific steps that go wrong without this.

Source facts

Repository
eclipse-che/che-dashboard
Last source activity
September 4, 2026 at 15:07
Detected SKILL.md language
English
Stars
19
Forks
67

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
rebase-to-main
description
Rebase the current branch onto latest main and force-push. Invoke whenever the user asks to rebase, bring a branch up to date, resolve rebase conflicts, or push after a rebase. Handles .deps/ conflict resolution, license regeneration, and forbidden-trailer cleanup — all the che-dashboard-specific steps that go wrong without this.
# Rebase Branch to Main ## Workflow ### 1. Fetch and compare ```bash git fetch origin main git log --oneline FETCH_HEAD..HEAD # commits to replay git log --oneline HEAD..FETCH_HEAD | head -10 # what main added ``` ### 2. Rebase ```bash git rebase FETCH_HEAD ``` No conflicts → skip to step 5. ### 3. Resolve conflicts #### `.deps/EXCLUDED/prod.md` or `.deps/EXCLUDED/dev.md` Both sides may have added entries. Merge them — keep all of main's entries and re-apply ours: ```bash git checkout --ours .deps/EXCLUDED/prod.md .deps/EXCLUDED/dev.md git add .deps/EXCLUDED/prod.md .deps/EXCLUDED/dev.md ``` Then after continuing the rebase, re-run `yarn license:generate` to restore any entries our branch added. #### `.deps/prod.md` or `.deps/dev.md` Always regenerated. Take main's version, then regenerate: ```bash git checkout --ours .deps/prod.md .deps/dev.md git add .deps/prod.md .deps/dev.md ``` #### `package.json` / `yarn.lock` Usually auto-merges. If not, reconcile manually (keep our dep additions alongside main's changes), then: ```bash yarn install ``` #### Continue ```bash git add <resolved-files> git rebase --continue ``` ### 4. Reinstall and regenerate licenses ```bash yarn install 2>&1 | grep -E "(added|removed|Done|Error)" | head -5 yarn license:generate ``` **If `yarn license:generate` exits with UNRESOLVED:** | Symptom | Fix | |---|---| | Package from main now missing from EXCLUDED | ClearlyDefined batch timeout — retry | | New package our branch added | Check score; add to EXCLUDED if 0 | Check score: ```bash curl -s --max-time 10 \ "https://api.clearlydefined.io/definitions/npm/npmjs/-/<package>/<version>" \ | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('scores',{}).get('effective',0))" ``` Add to EXCLUDED if score = 0: ```markdown | `<package>@<version>` | [clearlydefined](https://clearlydefined.io/definitions/npm/npmjs/-/<package>/<version>) | ``` ### 5. Verify ```bash yarn license:check # must exit 0 git log --oneline -5 git show --stat HEAD ``` ### 5.5. Build and test before pushing **MANDATORY — do not skip even for "pure dependency" rebases:** ```bash yarn build # must exit 0; dep upgrades can break TypeScript compilation yarn test # must exit 0; dep upgrades can cause test suite failures ``` If `yarn build` fails: investigate compilation errors and fix before continuing. If `yarn test` fails: investigate failures — dep upgrades often introduce breaking API changes or new peer dependency requirements that break tests. **Never force-push with a failing build or failing tests.** ### 6. Strip forbidden trailers Check for `Made-with` or `Co-authored-by` in any replayed commit: ```bash git log FETCH_HEAD..HEAD --format='%H %s' | while read hash rest; do git log -1 --format='%B' "$hash" | grep -qiE '^(Made-with|Co-authored-by):' && echo "DIRTY: $hash $rest" done ``` If dirty: ```bash FILTER_BRANCH_SQUELCH_WARNING=1 git filter-branch -f --msg-filter \ 'sed "/^Made-with:/d; /^Co-authored-by:/d"' \ -- FETCH_HEAD..HEAD git update-ref -d refs/original/refs/heads/$(git branch --show-current) ``` For a single-commit branch, amending is simpler: ```bash git commit --amend -m "$(git log -1 --format='%s')" # add trailers manually if needed ``` ### 7. Force push ```bash git push --force origin <branch> ``` ## Common `.deps/` conflict patterns **Pattern 1 — Both sides added entries, neither is a superset** Merge manually: keep all of main's entries, then append ours below them. **Pattern 2 — Our branch removed a dep entry that main still has** Take main's version and let `yarn license:generate` clean it up: ```bash git checkout --ours .deps/prod.md git add .deps/prod.md ``` **Pattern 3 — ClearlyDefined link vs `ecd.che` reference for the same package** Keep the ClearlyDefined link (more complete, preferred by the tool).
View on GitHub