Để chạy các lệnh bên trong bí danh git, và cụ thể là để truyền đối số cho các lệnh đó, bạn có thể sẽ phải tạo một hàm tạm thời mà sau đó bạn gọi ngay lập tức:
$ vim ~/.gitconfig
...
[alias]
foo = "! echo begin arg=$1/$2/end"
foo2 = "!f() { echo "begin arg=$1/$2/end"; }; f"
Trong ví dụ này, hàm có thể là những gì bạn cần (và cũng linh hoạt hơn về những gì bạn có thể làm trong một "câu lệnh"); và bạn có thể nói rằng đối với cả hai tùy chọn, các args còn lại của lệnh git chỉ đơn giản được chuyển dưới dạng args cho bí danh, bất kể đó là "echo" hay "f"; việc gọi hàm chỉ đơn giản là sử dụng các args, bỏ qua những gì không được sử dụng rõ ràng:
$ git foo a b c
begin arg=a/b/end a b c
$ git foo2 a b c
begin arg=a/b/end
Một ví dụ khác (liệt kê tất cả các bí danh, dựa trên mẫu phù hợp) (lưu ý: bạn có thể tiếp tục sử dụng lại cùng một tên hàm "f ()" trong suốt .gitconfig):
[alias]
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
Đầu tiên trả về bí danh chỉ "foo $", bí danh thứ hai cho "foo. *":
$ git alias foo
alias.foo ! echo begin arg=$1/$2/end
$ git alias 'foo.*'
alias.foo ! echo begin arg=$1/$2/end
alias.foo2 !f() { echo begin arg=$1/$2/end; }; f
(nb: kết quả thực tế có thể khác nhau dựa trên shell; Tôi đang sử dụng cái này với bash trên Linux, Unix & Cygwin (Windows).)