Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 78 additions & 1 deletion docs/common-issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

- [Troubleshooting](#troubleshooting)
- [Create using an existing branch as the PR branch](#create-using-an-existing-branch-as-the-pr-branch)
- [Frequently requested features](#use-case-create-a-pull-request-to-update-x-on-release)
- [Pull request shows "This branch is out-of-date with the base branch"](#pull-request-shows-this-branch-is-out-of-date-with-the-base-branch)
- [Frequently requested features](#frequently-requested-features)
- [Disable force updates to existing PR branches](#disable-force-updates-to-existing-pr-branches)
- [Add a no-verify option to bypass git hooks](#add-a-no-verify-option-to-bypass-git-hooks)

Expand All @@ -16,6 +17,82 @@ If you have an existing branch that you just want to create a PR for, then I rec

Alternatively, if you are trying to keep a branch up to date with another branch, then you can follow [this example](https://github.com/peter-evans/create-pull-request/blob/main/docs/examples.md#keep-a-branch-up-to-date-with-another).

### Pull request shows "This branch is out-of-date with the base branch"

When creating pull requests to promote changes from one branch to another (e.g., `dev` → `prod`), you may see a warning from GitHub stating "This branch is out-of-date with the base branch" even though the pull request should contain all the latest changes.

#### Root Cause

This issue occurs when the workflow checks out the **target** branch (e.g., `prod`), resets it locally to match the **source** branch (e.g., `dev`), and then creates a pull request. The problem is:

1. The local target branch is reset to match the source
2. The pull request branch is created from the locally reset target
3. However, the **remote** target branch remains unchanged
4. GitHub compares the pull request branch against the remote target branch
5. Since the remote target is behind, GitHub shows the "out-of-date" warning

#### Incorrect Workflow Pattern

```yml
# ❌ This pattern causes the "out-of-date" warning
name: Auto PR from dev to prod
on:
push:
branches:
- dev
jobs:
check-and-create-pr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: prod # ❌ Checking out target branch
- name: Reset promotion branch
run: |
git fetch origin dev:dev
git reset --hard dev
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
with:
branch: prod-promotion
title: "Auto PR: Merge changes from dev to prod"
```

#### Correct Solution

Check out the **source** branch and specify the **target** branch using the `base` input:

```yml
# ✅ Correct pattern - no "out-of-date" warning
name: Auto PR from dev to prod
on:
push:
branches:
- dev
jobs:
check-and-create-pr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: dev # ✅ Check out source branch
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
with:
branch: prod-promotion
base: prod # ✅ Specify target branch as base
title: "Auto PR: Merge changes from dev to prod"
body: "This pull request has been automatically created to merge changes from the dev branch into the prod branch."
```

This approach ensures that:
- The pull request branch is created from the source branch (`dev`)
- The pull request targets the correct base branch (`prod`)
- GitHub correctly shows the diff between source and target
- No "out-of-date" warning appears

For more examples of branch promotion workflows, see [Keep a branch up-to-date with another](https://github.com/peter-evans/create-pull-request/blob/main/docs/examples.md#keep-a-branch-up-to-date-with-another).

## Frequently requested features

### Disable force updates to existing PR branches
Expand Down
9 changes: 4 additions & 5 deletions docs/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,17 +73,16 @@ jobs:
productionPromotion:
runs-on: ubuntu-latest
steps:
# Checkout the source branch (main) that contains the changes
- uses: actions/checkout@v4
with:
ref: production
- name: Reset promotion branch
run: |
git fetch origin main:main
git reset --hard main
ref: main
# Create a pull request to merge main into production
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
with:
branch: production-promotion
base: production
```

## Use case: Create a pull request to update X on release
Expand Down