Switch between Git user configs
cargo install git-switch
To install git-switch
, use the above command. This assumes you have Rust and Cargo installed on your system.
- Create a configuration file in the home directory. Run the following command:
touch ~/.git-switch.json
This will create a file named .git-switch.json
in your home directory (~
).
- Open the
.git-switch.json
file in a text editor and add the desired Git configurations. The file should be in JSON format and contain an array of objects. Each object represents a Git host (e.g., GitHub, GitLab) and includes the following properties:"host"
: The hostname of the Git service."username"
: The desired username."email"
: The desired email address.
Here's an example configuration file:
[
{
"host": "github.com",
"username": "ashikmeerankutty",
"email": "[email protected]"
},
{
"host": "gitlab.com",
"username": "ameerankutty",
"email": "[email protected]"
}
]
Feel free to add or remove configurations based on your needs.
- To switch the Git configurations, navigate to the desired directory in your terminal and run the following command:
git-switch
This will read the .git-switch.json
file from your home directory and update the Git configurations based on the current directory.
To automatically change the Git config when the directory changes, follow these steps:
- Open your Zsh configuration file. Run the following command:
code ~/.zshrc
Replace code
with the command for your preferred text editor.
- Add the following code to the
~/.zshrc
file:
# Run git-switch on directory change
git_switch_on_chpwd() {
git-switch
}
# Set up chpwd hook
add-zsh-hook chpwd git_switch_on_chpwd
This code sets up a chpwd
hook, which is executed whenever the current directory changes. It calls git-switch
to update the Git configurations accordingly.
- Save the changes and reload your Zsh configuration:
source ~/.zshrc
Now, whenever you change directories in your terminal, the git-switch
command will automatically be executed to update the Git configurations based on the current directory.