A universal Git repository manager focused on efficiently cloning, pulling, and managing multiple repositories.
You can run it directly with:
python UniGit.py
Or download the latest release for a Windows executable.
When you run the script, it will:
- Present a menu with the following options:
- Clone repositories (single repo, all repos from one or more users, or a mix)
- Pull repositories (single repo, all in current directory, or by specific user(s))
- Switch branch
- View commit log
- Quit
- Clone repositories: Clone individual repositories or all repositories from one or more GitHub/GitLab/Bitbucket users. Accepts comma-separated URLs — user profile URLs and individual repo URLs can be mixed freely
- GitHub CLI support: Optionally use
gh repo cloneinstead ofgit clonefor cloning - Pull updates: Update a single repository, recursively update all repositories in a directory, or pull all repos for one or more specific users
- Branch management: List and switch branches
- Commit logs: View and save repository commit history
- Commit summarization: Generate AI-powered summaries of changes using Ollama (optional)
On first run, the script will create a config.json file with default settings:
{
"enable_summary": false,
"dry_run": false,
"log_level": "INFO",
"model": "llama3.2",
"max_retries": 2,
"summary_timeout": 30,
"use_user_directories": false,
"use_gh_cli": false
}enable_summary: Whether to generate commit summaries using Ollamadry_run: Preview changes without actually updating repositorieslog_level: Logging verbosity level (INFO, DEBUG, WARNING, ERROR)model: Ollama model to use for summarizationmax_retries: Number of retry attempts for failed summariessummary_timeout: Maximum time in seconds to wait for a summaryuse_user_directories: When cloning a single repository, nest it inside a folder named after the usernameuse_gh_cli: Use the GitHub CLI (gh) for cloning instead ofgit
- Python 3.6 or higher
- Git installed and in your system path
- The
requestspackage for API communication with Git hosting servicespip install requests - For GitHub CLI cloning (optional):
- GitHub CLI installed and authenticated
- For summarization feature (optional):
- Ollama installed and configured
- An LLM model available in Ollama (default: llama3.2)
You can build UniGit into an executable using PyInstaller:
pyinstaller --onefile UniGit.py
If you have UPX you can optionally use the --upx-dir flag with PyInstaller to compress the compiled executable and reduce its file size.
The script logs all errors to errors.log for troubleshooting.
When the summarization feature is enabled, commit summaries are saved to git_summaries.txt in the current directory.