Skip to content

Instantly share code, notes, and snippets.

@wottpal
Created June 11, 2025 09:38
Show Gist options
  • Save wottpal/f7310b6ab2a620f1b0d033e04e6f8a43 to your computer and use it in GitHub Desktop.
Save wottpal/f7310b6ab2a620f1b0d033e04e6f8a43 to your computer and use it in GitHub Desktop.
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: Merge Branch
on:
workflow_dispatch:
jobs:
merge:
name: Merge Branch
runs-on: ubuntu-latest
env:
MAIN_BRANCH: develop
FEATURE_BRANCH: feature
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GH_TOKEN }}
- name: Configure Git with Bot User
run: |
USER_DATA=$(curl -s -H "Authorization: Bearer ${{ secrets.GH_TOKEN }}" -H "Accept: application/vnd.github+json" https://api.github.com/user)
# Extract name and login, fall back to login if name is not set
USER_NAME=$(echo "$USER_DATA" | jq -r '.name // .login')
USER_LOGIN=$(echo "$USER_DATA" | jq -r '.login')
git config user.name "$USER_NAME"
git config user.email "[email protected]"
echo "Git configured with user '$USER_NAME' ([email protected])"
- name: Merge feature branch into main branch
run: |
set -e
echo "Fetching latest state from remote..."
git fetch origin
echo "Checking out $MAIN_BRANCH..."
git checkout $MAIN_BRANCH
echo "Resetting local $MAIN_BRANCH to remote state..."
git reset --hard origin/$MAIN_BRANCH
echo "Merging remote '$FEATURE_BRANCH' into '$MAIN_BRANCH'..."
git merge "origin/$FEATURE_BRANCH" --no-ff -m "Merge branch '$FEATURE_BRANCH'"
- name: Push changes to remote
run: |
set -e
echo "Pushing changes to $MAIN_BRANCH..."
git push origin $MAIN_BRANCH
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment