42 lines
2.7 KiB
Markdown
42 lines
2.7 KiB
Markdown
---
|
||
description: When a Jira story is finished (merged or abandoned locally), return to main, pull, delete the local story branch
|
||
alwaysApply: true
|
||
---
|
||
|
||
# Story end (Jira)
|
||
|
||
When the user **ends story work** on a ticketed branch—phrases like “end story”, “story is merged”, “clean up branch after NEON-…”, or they confirm the PR is **merged** to `main`—run this **git** sequence so local state matches the remote default branch.
|
||
|
||
## 1. Preconditions
|
||
|
||
- **Merged:** Prefer deleting the local branch only after **`main`** on the remote includes the story (PR merged). If the PR is **not** merged, `git branch -d` will refuse; use **`git branch -D`** only when the user explicitly wants to drop unmerged work.
|
||
- **Uncommitted changes:** Stash, commit, or discard before switching branches; do not leave a dirty tree without the user’s choice.
|
||
|
||
## 2. Steps (run in order)
|
||
|
||
1. **`git checkout main`**
|
||
2. **`git pull origin main`** (or `git pull` if `main` already tracks `origin/main` and that is correct for this repo)
|
||
3. **`git branch -d <story-branch>`** — use the branch that was used for the issue (first path segment should be the Jira key, e.g. `NEON-7-move-validation`). If Git reports “not fully merged”, confirm whether **`origin/main`** already contains the story (e.g. squash merge or follow-up commits only cherry-picked to `main`). If yes, **`git branch -D <story-branch>`** is OK **only with user confirmation** so local unpushed tip is not lost by mistake.
|
||
|
||
## 2a. When `main` is push-protected
|
||
|
||
If the user asks to **push** changes that sit on **`main`** and **`git push origin main` fails** (required PR / status checks), create a branch from current `main` (e.g. `chore/…`), **`git push -u origin`** that branch, give them the PR link, then **`git reset --hard origin/main`** if you had temporarily advanced local `main` so local `main` matches remote until the PR merges.
|
||
|
||
## 3. What not to do
|
||
|
||
- Do **not** delete **`main`** or **`origin/*`**.
|
||
- Do **not** assume the remote story branch should be deleted unless the user asks (many teams keep `origin/NEON-…` for history or delete via GitHub UI).
|
||
|
||
## 4. Jira transition
|
||
|
||
- Before finishing the story-end workflow, ask the user where the Jira story should move next: **`In Test`** or **`Done`**.
|
||
- After the user chooses one of those two states, perform the Jira transition with Atlassian MCP when available.
|
||
- If Atlassian MCP is unavailable or cannot complete the transition, tell the user and ask them to update the board manually.
|
||
|
||
## Related
|
||
|
||
- [story-kickoff](story-kickoff.md) — start of story workflow
|
||
- [git-workflow](git-workflow.md) — branch vs `main`
|
||
- [jira-git-naming](jira-git-naming.md) — branch names
|
||
- [commit-and-review](commit-and-review.md) — push only when the user requests it
|