go-commit

module
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2025 License: MIT

README ΒΆ

GitHub Workflow Status (branch) GoDoc Coverage Status Supported Go Versions GitHub Release Go Report Card

go-commit

Quick Git commit app with auto Go changed code formatting capabilities.


CHINESE README

δΈ­ζ–‡θ―΄ζ˜Ž

Main Features

🎯 Quick Commit Automation: Intelligent staging, formatting, and committing with amend support
⚑ Auto Go Formatting: Selective formatting of changed Go files with generated file exclusion
πŸ”„ Signature-info Management: Automatic Git signature selection based on remote URL patterns
🌍 Wildcard Patterns: Sophisticated pattern matching for complex enterprise workflows
πŸ“‹ Configuration-Driven: JSON-based configuration with score-based signature matching

Installation

go install github.com/go-mate/go-commit/cmd/go-commit@latest

Usage

# Quick commit with Go formatting
go-commit -m "some commit message" --format-go

# With signature info
go-commit -u "username" -e "example@example.com" -m "message" --format-go

# Use configuration file for auto choose signature info
go-commit -c "xx/xx/go-commit-config.json" -m "commit message" --format-go

# Amend previous commit
go-commit --amend -m "updated message" --format-go

# Force amend (even pushed to origin)
go-commit --amend --force -m "force amend message"

Configuration

Using a configuration file is adaptive but enables advanced features like automatic signature switching based on the project's remote URL.

To get started, you can generate a configuration template based on your current git remote:

# This creates a go-commit-config.json in current DIR
go-commit config example

This file allows you to define signatures for different git remotes. It looks like this:

{
  "signatures": [
    {
      "name": "work-github", "username": "work-user", "eddress": "work@company.com", "remotePatterns": [
      "git@github.company.com:*"
    ]
    },
    {
      "name": "play-github", "username": "play-user", "eddress": "play@example.com", "remotePatterns": [
      "git@github.com:play-user/*"
    ]
    }
  ]
}

Examples:

  • Project A with remote git@github.company.com:team/project-a β†’ auto commits as work-user(work@company.com)
  • Project B with remote git@github.com:play-user/project-b β†’ auto commits as play-user(play@example.com)

This automatic switching makes multi-project workflow much more convenient.

Validate Configuration:

Once setting up the configuration, you can validate it:

# Check if config loads as expected and preview matched signature
go-commit config -c /path/to/go-commit-config.json

More advanced use cases. See the configuration examples.

# Quick commit with formatting
alias gcm='go-commit --username=yourname --format-go'

# Quick amend with formatting (extends gcm)
alias gca='gcm --amend'
Usage Examples
# Commit with message and Go formatting
gcm -m "add new feature"

# Amend last commit
gca

# Change last commit
gca -m "new commit message"

# Force amend (dangerous - use with caution)
gca -m "force update pushed to remote" --force
Advanced Usage Examples
# Stage changes without committing (useful for testing)
go-commit --no-commit --format-go

# Auto-format Go files and commit with auto-signature
go-commit -m "improve code format" --format-go --auto-sign

# Commit with specific user info (overrides config)
go-commit -u "John Doe" -e "john@company.com" -m "hotfix" --format-go

# Use mailbox instead of eddress for better semantics
go-commit --mailbox "developer@team.com" -m "feature update" --format-go

# Configuration-driven commit (automatic signature based on remote)
go-commit -c ~/go-commit-config.json -m "automated commit" --format-go

πŸ“„ License

MIT License. See LICENSE.


🀝 Contributing

Contributions are welcome! Report bugs, suggest features, and contribute code:

  • πŸ› Found a mistake? Open an issue on GitHub with reproduction steps
  • πŸ’‘ Have a feature idea? Create an issue to discuss the suggestion
  • πŸ“– Documentation confusing? Report it so we can improve
  • πŸš€ Need new features? Share the use cases to help us understand requirements
  • ⚑ Performance issue? Help us optimize through reporting slow operations
  • πŸ”§ Configuration problem? Ask questions about complex setups
  • πŸ“’ Follow project progress? Watch the repo to get new releases and features
  • 🌟 Success stories? Share how this package improved the workflow
  • πŸ’¬ Feedback? We welcome suggestions and comments

πŸ”§ Development

New code contributions, follow this process:

  1. Fork: Fork the repo on GitHub (using the webpage UI).
  2. Clone: Clone the forked project (git clone https://github.com/yourname/repo-name.git).
  3. Navigate: Navigate to the cloned project (cd repo-name)
  4. Branch: Create a feature branch (git checkout -b feature/xxx).
  5. Code: Implement the changes with comprehensive tests
  6. Testing: (Golang project) Ensure tests pass (go test ./...) and follow Go code style conventions
  7. Documentation: Update documentation to support client-facing changes and use significant commit messages
  8. Stage: Stage changes (git add .)
  9. Commit: Commit changes (git commit -m "Add feature xxx") ensuring backward compatible code
  10. Push: Push to the branch (git push origin feature/xxx).
  11. PR: Open a merge request on GitHub (on the GitHub webpage) with detailed description.

Please ensure tests pass and include relevant documentation updates.


🌟 Support

Welcome to contribute to this project via submitting merge requests and reporting issues.

Project Support:

  • ⭐ Give GitHub stars if this project helps you
  • 🀝 Share with teammates and (golang) programming friends
  • πŸ“ Write tech blogs about development tools and workflows - we provide content writing support
  • 🌟 Join the ecosystem - committed to supporting open source and the (golang) development scene

Have Fun Coding with this package! πŸŽ‰πŸŽ‰πŸŽ‰


GitHub Stars

Stargazers

Directories ΒΆ

Path Synopsis
cmd
go-commit command
go-commit: Smart Git commit app with auto Go code formatting Provides intelligent commit workflow with adaptive Go source formatting Supports amend operations, custom commit messages, and custom configuration
go-commit: Smart Git commit app with auto Go code formatting Provides intelligent commit workflow with adaptive Go source formatting Supports amend operations, custom commit messages, and custom configuration
Package commitmate: Advanced Git commit automation engine with intelligent Go formatting Features smart commit workflows with auto Go source code formatting and remote-based signature-info selection Provides seamless staging, formatting, committing, and amend operations with configuration-driven signatures Supports wildcard pattern matching for Git remote URLs to auto-select appropriate commit signatures
Package commitmate: Advanced Git commit automation engine with intelligent Go formatting Features smart commit workflows with auto Go source code formatting and remote-based signature-info selection Provides seamless staging, formatting, committing, and amend operations with configuration-driven signatures Supports wildcard pattern matching for Git remote URLs to auto-select appropriate commit signatures
internal
utils
Package utils provides advanced utility functions for go-commit pattern matching Contains sophisticated pattern matching utilities for Git remote URL matching Implements recursive glob matching algorithms with wildcard support and scoring systems Optimized for high-performance pattern matching in enterprise Git workflow automation
Package utils provides advanced utility functions for go-commit pattern matching Contains sophisticated pattern matching utilities for Git remote URL matching Implements recursive glob matching algorithms with wildcard support and scoring systems Optimized for high-performance pattern matching in enterprise Git workflow automation

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL