Skip to contentSkip to conversation

alias g to git in .gitconfig?

PATCH New Rob Sanheim 4 participants 6 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

This is pretty trivial, but I'm a lazy typist.

Is it possible to alias 'g' to git via git config, instead of via bash? If I do a plain bash alias then none of the nice autocompletion from git-contrib work with 'g'.

- Rob

#1 lore raw
Quoted 5 lines · Rob Sanheim

This is pretty trivial, but I'm a lazy typist.

Is it possible to alias 'g' to git via git config, instead of via bash? If I do a plain bash alias then none of the nice autocompletion from git-contrib work with 'g'.

No, you'll need to alias 'g' to git in bash, and then if you still want completion you'll need to also register the compgen to call _git completion routine. Its two lines:

alias g=git
complete -o default -o nospace -F _git g

Signature · 1 line
Shawn.
#2 lore raw

Thanks, that did it.

Quoted 17 lines · Shawn O. Pearce
Quoted 5 lines · Rob Sanheim

This is pretty trivial, but I'm a lazy typist.

Is it possible to alias 'g' to git via git config, instead of via bash? If I do a plain bash alias then none of the nice autocompletion from git-contrib work with 'g'.

No, you'll need to alias 'g' to git in bash, and then if you still want completion you'll need to also register the compgen to call _git completion routine. Its two lines:

alias g=git
complete -o default -o nospace -F _git g

--
Shawn.

#3 lore raw

PATCH 1/1 bash completion: alias 'g' to 'git' with completion

---

Quoted 9 lines · Rob Sanheim
Quoted 6 lines · Shawn O. Pearce

No, you'll need to alias 'g' to git in bash, and then if you still want completion you'll need to also register the compgen to call _git completion routine. Its two lines:

alias g=git
complete -o default -o nospace -F _git g

Thanks, that did it.

Actually it's not enough, you need to teach fetch, pull and push to recognise the new alias too, as in this patch. I do wonder if there's a better approach to those functions however, so that the "obvious" fix suggested by Shawn would work.

- Thomas

 contrib/completion/git-completion.bash |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
contrib/completion/git-completion.bash +4 -3
index 7284c3b..547e735 100755
@@ -789,7 +789,7 @@ _git_fetch ()
 	git-fetch*,1)
 		__gitcomp "$(__git_remotes)"
 		;;
-	git,2)
+	git,2|g,2)
 		__gitcomp "$(__git_remotes)"
 		;;
 	*)
@@ -1053,7 +1053,7 @@ _git_pull ()
 	git-pull*,1)
 		__gitcomp "$(__git_remotes)"
 		;;
-	git,2)
+	git,2|g,2)
 		__gitcomp "$(__git_remotes)"
 		;;
 	*)
@@ -1075,7 +1075,7 @@ _git_push ()
 	git-push*,1)
 		__gitcomp "$(__git_remotes)"
 		;;
-	git,2)
+	git,2|g,2)
 		__gitcomp "$(__git_remotes)"
 		;;
 	*)
@@ -1717,6 +1717,7 @@ _gitk ()
 }
 
 complete -o default -o nospace -F _git git
+complete -o default -o nospace -F _git g
 complete -o default -o nospace -F _gitk gitk
 
 # The following are necessary only for Cygwin, and only are needed
Signature · 1 line
1.6.0.2.771.g3967
#4 lore raw

PATCH 1/1 bash: remove fetch, push, pull dashed form leftovers

We don't provide complation for git-commands in dashed form anymore, so there is no need to keep those cases.

---

Quoted 4 lines · Thomas Rast

Actually it's not enough, you need to teach fetch, pull and push to recognise the new alias too, as in this patch. I do wonder if there's a better approach to those functions however, so that the "obvious" fix suggested by Shawn would work.

Maybe something like this?

 contrib/completion/git-completion.bash |   36 ++++++++------------------------
 1 files changed, 9 insertions(+), 27 deletions(-)
contrib/completion/git-completion.bash +9 -27
index 95c81f9..5a4e8c8 100755
@@ -784,14 +784,9 @@ _git_fetch ()
 {
 	local cur="${COMP_WORDS[COMP_CWORD]}"
 
-	case "${COMP_WORDS[0]},$COMP_CWORD" in
-	git-fetch*,1)
+	if [ "$COMP_CWORD" = 2 ]; then
 		__gitcomp "$(__git_remotes)"
-		;;
-	git,2)
-		__gitcomp "$(__git_remotes)"
-		;;
-	*)
+	else
 		case "$cur" in
 		*:*)
 			local pfx=""
@@ -810,8 +805,7 @@ _git_fetch ()
 			__gitcomp "$(__git_refs2 "$remote")"
 			;;
 		esac
-		;;
-	esac
+	fi
 }
 
 _git_format_patch ()
@@ -1051,36 +1045,25 @@ _git_pull ()
 {
 	local cur="${COMP_WORDS[COMP_CWORD]}"
 
-	case "${COMP_WORDS[0]},$COMP_CWORD" in
-	git-pull*,1)
-		__gitcomp "$(__git_remotes)"
-		;;
-	git,2)
+	if [ "$COMP_CWORD" = 2 ]; then
 		__gitcomp "$(__git_remotes)"
-		;;
-	*)
+	else
 		local remote
 		case "${COMP_WORDS[0]}" in
 		git-pull)  remote="${COMP_WORDS[1]}" ;;
 		git)       remote="${COMP_WORDS[2]}" ;;
 		esac
 		__gitcomp "$(__git_refs "$remote")"
-		;;
-	esac
+	fi
 }
 
 _git_push ()
 {
 	local cur="${COMP_WORDS[COMP_CWORD]}"
 
-	case "${COMP_WORDS[0]},$COMP_CWORD" in
-	git-push*,1)
-		__gitcomp "$(__git_remotes)"
-		;;
-	git,2)
+	if [ "$COMP_CWORD" = 2 ]; then
 		__gitcomp "$(__git_remotes)"
-		;;
-	*)
+	else
 		case "$cur" in
 		*:*)
 			local remote
@@ -1104,8 +1087,7 @@ _git_push ()
 			__gitcomp "$(__git_refs)"
 			;;
 		esac
-		;;
-	esac
+	fi
 }
 
 _git_rebase ()
Signature · 1 line
1.6.0.2.474.ga74ad.dirty
Tested-by on v1 1/1
#5 lore raw

Re: [PATCH] bash: remove fetch, push, pull dashed form leftovers

Quoted 2 lines · SZEDER Gábor

We don't provide complation for git-commands in dashed form anymore, so there is no need to keep those cases.

[...]

Quoted 5 lines · Thomas Rast
Quoted 2 lines

I do wonder if there's a better approach to those functions however, so that the "obvious" fix suggested by Shawn would work.

Maybe something like this?

That's indeed much simpler and better. FWIW,

Signature · 2 lines
Thomas Rast
trast@{inf,student}.ethz.ch