A GitHub Action for syncing the current repository using force push.
- Sync branches between two Github repositories
- Sync branches from a remote repository
- Github action can be triggered on a timer or on push
- To push to a remote repository, please checkout wei/git-sync
# File: .github/workflows/repo-sync.yml
on:
schedule:
- cron: */15 * * * *
jobs:
repo-sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: repo-sync
uses: wei/github-sync@master
env:
SOURCE_REPO: ""
SOURCE_BRANCH: ""
DESTINATION_BRANCH: ""
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
args: $SOURCE_REPO $SOURCE_BRANCH:$DESTINATION_BRANCH
GITHUB_TOKEN must be checked under secrets.
If SOURCE_REPO is private or with another provider, either (1) use an authenticated HTTPS repo clone url like https://username:access_token@github.com/username/repository.git or (2) set a SSH_PRIVATE_KEY secret and use the SSH clone url
The job may fail if upstream has a .workflow file present. Consider using git-sync instead.
- Make a backup
- Create a new branch in your repo (destination repo), it should not share the name with any branch in source repo
- Make the new branch the default branch under repo settings
- Use
*:*in place of$SOURCE_BRANCH:$DESTINATION_BRANCH
This will force sync ALL branches to match source repo. Branches that are created only in the destination repo will not be affected but all the other branches will be hard reset to match source repo.