Unable to push branch because the branch is behind the deployed branch. Using --force to deploy branch.
See original GitHub issueHi. First of all, thanks for your work. It is becoming an easy-going and straightforward tool to use inside the actions.
But for two days I’m getting this error in my deploy action. The branches in Heroku are pretty clean and I can use it normally in my local environment, pushing to Heroku. It also works in the Travis CI.
Don’t mind the open Postgres user and pass. It will be changed and moved to secrets and my test database has no secrets to the outside world.
Pay attention, please, on the “staging deploy” since the “production deploy” has some attempts I’ve made within these two days.
What am I missing?
I’ll appreciate any help.
Thanks
Config file:
name: FlowClimateBuild
on: [push]
jobs:
linters:
name: Linters
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7.1
- name: Ruby gem cache
uses: actions/cache@v1
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-gems-
- name: Install gems
run: |
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
- name: Run linters
run: |
bundle exec rubocop --parallel
tests:
name: Tests
runs-on: ubuntu-latest
services:
postgres:
image: postgres:12
env:
POSTGRES_DB: flowcontrol_test
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7.1
- name: Ruby gem cache
uses: actions/cache@v1
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-gems-
- name: Install gems
run: |
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
- name: Setup test database
env:
RAILS_ENV: test
PG_HOST: localhost
PG_USER: ""
PG_PASSWORD: ""
PG_PORT: ${{ job.services.postgres.ports['5432'] }}
run: |
bundle exec rails db:setup
- name: Run tests
run: bundle exec rspec
env:
secret_key_32_encoded: "8L+WeHTWhNtEAvQzoRaYqYtl4VCwDMReh2SzicO/iCA=\n"
deploy-staging:
runs-on: ubuntu-latest
# needs: [linters, tests]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: akhileshns/heroku-deploy@v3.5.6
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "flowclimatestaging"
heroku_email: "celso.av.martins@gmail.com"
deploy-prd:
runs-on: ubuntu-latest
# needs: [linters, tests]
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v2
- name: Staging deploy
run: |
git push -f https://heroku:${{ secrets.HEROKU_API_TOKEN }}@git.heroku.com/flowclimateapp.git origin/develop:master
Complete error message:
Created and wrote to ~/.netrc
Successfully logged into heroku
heroku: Press any key to open up the browser to login or q to exit: › Warning: heroku update available from 7.43.0 to 7.43.2.
Added git remote heroku
heroku: Press any key to open up the browser to login or q to exit: fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Unable to push branch because the branch is behind the deployed branch. Using --force to deploy branch.
(If you want to avoid this, set dontuseforce to 1 in with: of .github/workflows/action.yml.
Specifically, the error was: Error: Command failed: git push heroku HEAD:refs/heads/master
fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
fatal: 'heroku' does not appear to be a git repository
Error: Error: Command failed: git push heroku HEAD:refs/heads/master --force
fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Issue Analytics
- State:
- Created 3 years ago
- Reactions:10
- Comments:42 (15 by maintainers)
Top Results From Across the Web
[Solved] Unable to push branch because the branch is behind ...
Problem: Running into the following error when trying to use the akhileshns/heroku-deploy GitHub Action in a GitHub Actions workflow:
Read more >Heoku Github actions deployement - CI/CD - Unable to push ...
Unable to push branch because the branch is behind the deployed branch. Using --force to deploy branch. (If you want to avoid this, ......
Read more >Protected branches - GitLab Documentation
Allow force push on a protected branch · On the top bar, select Main menu > Projects and find your project. · On...
Read more >Push to a remote branch in Visual Studio - Microsoft Learn
Push to a remote in Visual Studio by using GitHub or Azure DevOps.
Read more >Remote Branches - Git
You can also do git push origin serverfix:serverfix , which does the same thing – it says, “Take my serverfix and make it...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
So some of the git logs are just default logs from the action (I suppose that needs to be updated).
Based on your logs @rogargon, it seems like there might be a path issue with the ADD command in Docker. So the two fixes that come to mind are, you can try switching from ADD to COPY (which works sometimes somehow) or you could doublecheck if the path to whatever you’re importing is accurate relative to the location of the Dockerfile.
Sources: https://stackoverflow.com/questions/47281687/dockerfile-add-failed-no-source-files-were-specified https://stackoverflow.com/questions/54425742/docker-add-giving-error-no-source-files-were-specified
If it’s none of these and the problem is in fact an issue with the Action, then you can try the following:
The “justlogin” option essentially turns the “heroku-deploy” action to a “heroku-login” action for all intents and purposes. So from there you should be able to use it like you would use the local Cli on your machine to deploy your code. So based on that, I would recommend deploying the code you have on your machine from the heroku cli and add the same commands in the commented section of the answer and it should just work.
P.S Normally the Heroku Deploy action also checks if the app-name for your app is available or not and automatically creates the app if it isn’t. If you do choose to go the justlogin route, keep in mind you will need to create the app and then put only the deploy commands in the commented section.
Reference: https://devcenter.heroku.com/articles/container-registry-and-runtime
I’ve been running into this issue quite a bit for the past hour:
One possible cause is that
HEROKU_API_KEY
may not be defined in the environment for the Github Action step. As a result, the action would prompt you to log in via a browser.To resolve, you need to:
(Optional) Run
heroku auth:token
to generate a new long-term token if you don’t have one already.Add
HEROKU_API_KEY
to your job’s environment.Hope this helps. 🚀