I'm trying to use to use the same name for an alias as the existing command, so that the alias shadows the original command (preventing me from deleting files off the working tree).
[alias] rm = rm --cached diff = diff --color
Unfortunatly this is not working. Does anyone know a workaround? Thanks.
Edit Setting color.diff = true
gives colored output as default.
It is important to note that there is no direct git alias command. Aliases are created through the use of the git config command and the Git configuration files. As with other configuration values, aliases can be created in a local or global scope.
Start a new branch. gitconfig file and add each alias under [alias], like so: Additionally, you can have repo-specific aliases. Just edit . git/config in the repo where you want to add the alias, and follow the same syntax.
Add git alias The simplest way to add a git alias is by running a command to add the alias to the git global configuration file. For example, running the command git config --global alias. hist "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short" will add the alias git hist .
Your git aliases are often stored per your user's configuration at ~/. gitconfig . You can also manually set aliases using, for example, the command git config alias. s 'status -s' .
For commands like rm --cached
that don't have configurable options, your best bet is to just make an alias named differently. For example:
[alias] rmc = rm --cached
You may have already figured this out, but Git aliases cannot shadow existing Git commands. From the git-config
man page:
To avoid confusion and troubles with script usage, aliases that hide existing git commands are ignored.
As a workaround, you can define aliases in Bash to get the result you want. Here's something I just knocked up for a pet peeve of mine - that 'git add' is not verbose by default. (And there's no config setting for it).
Put this in your ~/.bash_profile
or ~/.bash_rc
function do_git { cmd=$1 shift extra="" if [ "$cmd" == "add" ]; then extra="-v" elif [ "$cmd" == "rm" ]; then extra="--cached" fi git="$(which git)" ex="$git $cmd $extra $@" ${ex} } alias git='do_git'
Then just call it like normal:
$ git add . add 'foo'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With