# Git Commit & Push action
[![Action test on Ubuntu](https://github.com/GuillaumeFalourd/git-commit-push/actions/workflows/ubuntu_action_test.yml/badge.svg)](https://github.com/GuillaumeFalourd/git-commit-push/actions/workflows/ubuntu_action_test.yml) [![Action test on MacOS](https://github.com/GuillaumeFalourd/git-commit-push/actions/workflows/macos_action_test.yml/badge.svg)](https://github.com/GuillaumeFalourd/git-commit-push/actions/workflows/macos_action_test.yml) [![Action test on Windows](https://github.com/GuillaumeFalourd/git-commit-push/actions/workflows/windows_action_test.yml/badge.svg)](https://github.com/GuillaumeFalourd/git-commit-push/actions/workflows/windows_action_test.yml)
GitHub Action to commit & push changes made in workflows :octocat:
_**Note**: This action is supported on **all runners** operating systems (`ubuntu`, `macos`, `windows`)_
* * *
## 📚 Usage
[![Public workflows that use this action.](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi-endbug.vercel.app%2Fapi%2Fgithub-actions%2Fused-by%3Faction%3DGuillaumeFalourd%2Fgit-commit-push%26badge%3Dtrue)](https://github.com/search?o=desc&q=GuillaumeFalourd+git-commit-push+path%3A.github%2Fworkflows+language%3AYAML&s=&type=Code)
### ⚠️ Requirements
- The [`actions/checkout`](https://github.com/marketplace/actions/checkout) is mandatory to use this action, as it will be necessary to access the repository files.
### `1️⃣ Minimal`: Commit and Push with `default` parameters
```yaml
steps:
- uses: actions/checkout@v4
# [...] --> steps with actions or commands updating repository files
- uses: GuillaumeFalourd/git-commit-push@v1.3
```
### `2️⃣ Full`: Commit and Push with `customized` parameters
```yaml
steps:
- uses: actions/checkout@v4
# [...] --> steps with actions or commands updating repository files
- uses: GuillaumeFalourd/git-commit-push@v1.3
with:
email: ${{ github.actor }}@users.noreply.github.com
name: ${{ github.actor }}
commit_message: your_message
target_branch: target_branch_name
files: file1 file2 directory1 directory2/file3
remote_repository: https://github.com/owner/another_repository
access_token: ${{ github.token }}
force: true
empty: true
tags: true
```
### Known Issue
When pushing to the same repository, the workflow may return the following error using the action:
```
remote: Permission to /.git denied to github-actions[bot].
fatal: unable to access 'https://github.com///': The requested URL returned error: 403
```
This can be resolved by adding `persist-credentials: false` and `fetch-depth: 0` to the workflow configurations when using the `actions/checkout`.
```yaml
- uses: actions/checkout@v4
with:
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of the personal access token.
fetch-depth: 0 # otherwise, there would be errors pushing refs to the destination repository.
- uses: GuillaumeFalourd/git-commit-push@v1.3
with:
email: ${{ github.actor }}@users.noreply.github.com
name: ${{ github.actor }}
commit_message: your_message
target_branch: target_branch_name
files: file1 file2 directory1 directory2/file3
remote_repository: https://github.com/owner/another_repository
access_token: ${{ github.token }}
force: true
empty: true
tags: true
```
* * *
## ▶️ Action Inputs
Field | Mandatory | Default Value | Observation
------------ | ------------ | ------------- | -------------
**email** | NO | `${{ github.actor }}@users.noreply.github.com` | Github user email
_e.g: `octocat@github.com`_
**name** | NO | `${{ github.actor }}` | Github username
_e.g: `octocat`_
**commit_message** | NO | `Commit performed using Push and Commit action` | Commit message
**target_branch** | NO | `${{ github.ref }}` | Branch to push the changes back
**files** | NO | `.` | Files to add separated by space
_e.g: `file1 file2 directory1 directory2/file3`_
**remote_repository** | NO | `origin` | Repository url to push the code
**access_token** | NO | `${{ github.token }}` | [Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) is necessary if push to another repository
**force** | NO | `0` | Whether to perform force push
**empty** | NO | `0` | Whether to allow empty commit
**tags** | NO | `0` | Whether to use --tags
* * *
## 🤝 Contributing
☞ [Guidelines](https://github.com/GuillaumeFalourd/git-commit-push/blob/main/CONTRIBUTING.md)
## 🏅 Licensed
☞ This repository uses the [Apache License 2.0](https://github.com/GuillaumeFalourd/git-commit-push/blob/main/LICENSE)