How to tell git to use the correct identity (name and email) for a given project?
git config user.email "[email protected]"
Doing that one inside a repo will set the configuration on THAT repo, and not globally.
Seems like that's pretty much what you're after, unless I'm misreading you.
You need to use the local set command below:
local set
git config user.email [email protected]
git config user.name 'Mahmoud Zalt'
local get
git config --get user.email
git config --get user.name
The local config file is in the project directory: .git/config
.
global set
git config --global user.email [email protected]
git config --global user.name 'Mahmoud Zalt'
global get
git config --global --get user.email
git config --global --get user.name
The global config file in in your home directory: ~/.gitconfig
.
Remember to quote blanks, etc, for example: 'FirstName LastName'
Edit the config file with in ".git" folder to maintain the different username and email depends upon the repository
- Go to Your repository
- Show the hidden files and go to ".git" folder
- Find the "config" file
- Add the below lines at EOF
[user]
name = Bob
email = [email protected]
This below command show you which username and email set for this repository.
git config --get user.name
git config --get user.email
Example: for mine that config file in D:\workspace\eclipse\ipchat\.git\config
Here ipchat is my repo name
If you use git config user.email "[email protected]"
it will be bound to the current project you are in.
That is what I do for my projects. I set the appropriate identity when I clone/init the repo. It is not fool-proof (if you forget and push before you figure it out you are hosed) but it is about as good as you can get without the ability to say git config --global user.email 'ILLEGAL_VALUE'
Actually, you can make an illegal value. Set your git config --global user.name $(perl -e 'print "x"x968;')
Then if you forget to set your non-global values you will get an error message.
[EDIT] On a different system I had to increase the number of x to 968 to get it to fail with "fatal: Impossibly long personal identifier". Same version of git. Strange.
As of Git 2.13 you can use an includeIf
in your gitconfig to include a file with a different configuration based on the path of the repository where you are running your git commands.
Since a new enough Git comes with Ubuntu 18.04 I've been using this in my ~/.gitconfig
quite happily.
[include]
path = ~/.gitconfig.alias # I like to keep global aliases separate
path = ~/.gitconfig.defaultusername # can maybe leave values unset/empty to get warned if a below path didn't match
# If using multiple identities can use per path user/email
# The trailing / is VERY important, git won't apply the config to subdirectories without it
[includeIf "gitdir:~/projects/azure/"]
path = ~/.gitconfig.azure # user.name and user.email for Azure
[includeIf "gitdir:~/projects/gitlab/"]
path = ~/.gitconfig.gitlab # user.name and user.email for GitLab
[includeIf "gitdir:~/projects/foss/"]
path = ~/.gitconfig.github # user.name and user.email for GitHub
https://motowilliams.com/conditional-includes-for-git-config#disqus_thread
To use Git 2.13 you will either need to add a PPA (Ubuntu older than 18.04/Debian) or download the binaries and install (Windows/other Linux).