Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/madx/git-identity

Manage your identity in Git
https://github.com/madx/git-identity

git git-addons identity-manager plugin

Last synced: about 2 months ago
JSON representation

Manage your identity in Git

Awesome Lists containing this project

README

        

git-identity
============

You often use Git in different contexts, like at work and for open-source
projects. You may then want to use different user names/email pairs to identify
yourself.

This is not an important part of your work, and setting this up should be really
fast. That's where `git-identity` comes in: setting up your identity information only takes one command with it.

*Note:* Identities are stored in the global git config. Using an identity copies the setting in the local repo git configuration. If you are changing the global config for one identity does *NOT* propagate the changes to the local repos. You will have use `git identity --update` in the repo folder to update the identity.

Installing
----------

Simply link or copy the `git-identity` in a directory that's in your `PATH`, Git
will pick it up and make it available as `git identity`.

$ ln -s git-identity ~/bin/git-identity

Under Windows, go to System > Advanced System Parameters > Environment Variable. Find the "Path" entry under *system variables* and add the path to where you downloaded `git-identity`.

Then you may setup a default identity with the following command (see Usage for more information):

$ git identity --define default Me [email protected]

To get bash completion, just source the `git-identity.bash-completion` file
in your initialization scripts, such as `.bashrc`.

To get zsh completion, move the `git-identity.zsh-completion` file to a location present in your `$FPATH`, renaming the file to `_git-identity`.

You can also use [basher](https://github.com/basherpm/basher) to install git-identity:

$ basher install madx/git-identity

Usage
-----

Add an identity:

$ git identity --define [] []

Add a GPG key to the identity (see GPG specific information below)

$ git identity --define-gpg
Added GPG key DA221397A6FF5EZZ to [default] user (GPG key: DA221397A6FF5EZZ)

Add a SSH key to the identity

$ git identity --define-ssh
Added SSH key id_rsa_anotheraccount to [default] user (SSH key: id_rsa_anotheraccount)

Print the current identity:

$ git identity
Current identity: [default] user

Change identity:

$ git identity user2
Using identity: [default2] user2

Update identity:

$ git identity --update
Using identity: [user] First Last (SSH key: id_rsa_user_new_key)
These are the changes:
1,2c1,2
< core.sshcommand ssh -i ~/.ssh/id_rsa_user
< user.email [email protected]
---
> core.sshcommand ssh -i ~/.ssh/id_rsa_user_new_key
> user.email [email protected]

List all identities:

$ git identity --list
Available identities:
[default] user
[default2] user2

Listing raw identities:

$ git identity --list-raw
default
default2

Deleting an identity:

$ git identity --remove

Printing the raw identity (for use in scripts)

$ git identity --print
$ git identity --print

Priniting the local settings

$ git identity --get-settings
core.sshcommand ssh -i ~/.ssh/id_rsa_user
user.email [email protected]
user.identity user
user.name First Last

Retriving GIT_SSH_COMMAND or running command with that in the environment:

$ git identity -c my_other_identity
GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_myotheridentity"

$ git identity -c my_other_identity git clone [email protected]:me/myrepo.git
Cloning into 'myrepo'...

Setting up GPG
--------------

More information about how to use GPG with `git-identity` may be found in [GPG_SETUP.md](GPG_SETUP.md)

Setting up SSH
--------------

If you have a valid SSH key associate to the agent you do not have to do anything beside `git identity --define-ssh `.

This sets `core.sshCommand="ssh -i ~/ssh/ssh-file"` in the local git config when using that identity

### Creating a new identity

ssh-keygen -t rsa -b 4096 -C "yourname@yourdomain" -f ~/.ssh/id_rsa_anotheraccount
ssh-add id_rsa_anotheraccount

### Debugging a ssh connection problem

git identity --define-ssh

With `verbosity=1` it will use `ssh -v`.
With `verbosity=2` it will use `ssh -vvv`.