# karn **Repository Path**: mirrors/karn ## Basic Information - **Project Name**: karn - **Description**: karn 可管理多个 Git 账号 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: https://www.oschina.net/p/karn - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-25 - **Last Updated**: 2025-08-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![Build Status](https://travis-ci.org/prydonius/karn.svg?branch=master)](https://travis-ci.org/prydonius/karn) # karn: Manage multiple Git identities with ease Setup your Git repositories to always use a specific identity based on the directory tree. With karn, you never have to manually change the local repository configuration to a different identity from your global. karn will change your repository's local user.name and user.email configuration if necessary, but will never modify your global configuration. ## Install ### Homebrew (OS X) Install using Homebrew on OS X ``` brew install karn ``` ### Pre-built binary Head to the [releases](https://github.com/prydonius/karn/releases) page to download pre-built binaries for OS X/Linux/Windows. ### Go You can install karn using Go with the following command: ``` go get github.com/prydonius/karn/cmd/karn ``` ### Arch Linux `karn` has a AUR package: . You can install it using your [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers) of choice. ## Usage karn can be used in two ways! ### Automatically check for identity updates before running a Git command **Note: this method overrides the `git` command with a function that runs `karn update` before executing the original Git command.** *Run `karn init` to see exactly what the `git` command is overriden with* If you're okay with the scary warnings above, add the following line to your shell startup script (e.g. .bash_profile, .zshrc) ``` if which karn > /dev/null; then eval "$(karn init)"; fi ``` If you run on [fish](https://fishshell.com/) you can put this line in your config.fish ``` alias git="karn update; command git $argv" ``` ### Run manually when you want to update Alternatively, you can run `karn update` manually in a Git repository whenever you need to update your identity for that repository. ## Configuring Identities karn looks for a YAML configuration file in your home directory, `~/.karn.yml`. A sample configuration looks like this: ``` --- ~/Fun: name: Adnan Abdulhussein email: adnan@prydoni.us ~/Fun/karn: name: Sisterhood of Karn email: sisterhood@karn.io /Work: name: Adnan A email: adnan@bitnami.com signingKey: 3AA5C34371567BD2 ``` In a given repo, karn will try to match with the deepest configured directory. For the configuration above, any repo under the `~/Fun` directory will match the first identity, with the exception of `~/Fun/karn` which matches the second identity. If an identity isn't found, the repo is left untouched.