I made this workflow to push changes from my private
github repo to push it to another private
repo on another platform
name: Push to repo
on:
workflow_dispatch:
BRANCH:
description: 'Branch to use'
required: true
default: 'production'
type: choice
options:
- production
- develop
jobs:
push-to-ccfe:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup SSH Keys and known_hosts
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
mkdir -p ~/.ssh
ssh-keyscan git.something >> ~/.ssh/known_hosts
ssh-agent -a ${{ env.SSH_AUTH_SOCK }} > /dev/null
ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}"
- name: setup git and push to remote
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "${{ secrets.GH_MAIL }}"
git remote add newremote [email protected]
- name: Check branch and push
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
git fetch origin -a
git push newremote ${{ inputs.BRANCH }}:${{ inputs.BRANCH }}
it’s all good up until I actually try to push
where I first get a warning:
warning: no common commits
and then the actual error:
! [rejected] develop -> develop (non-fast-forward)
error: failed to push some refs to 'git.something'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
I don’t understand if I try from the terminal and push I get no errors.
p.s.
the point of this workflow is to avoid using the terminal, I want to put a cronjob so that changes to this repo are pushed in another remote.
2
Answers
apparently the solution was to change the
checkout
command at the beginning.this gets me what I needed
Your commands are:
You are fetching and pushing to the same
origin
(same remote repository)Assuming that the original
checkout
did setorigin
, I would rather set a second remote, for referencing the second remote repository (you want to push to).Then fetch from the first and push from the second: