2012-06-21 24 views
10

Có tùy chọn nào để hiển thị lệnh đầy đủ khi sử dụng bí danh không?Hiển thị lệnh đầy đủ khi thực hiện một bí danh Git?

Ví dụ:

$ git ci -m "initial commit" 
Full command: git commit -m "initial commit" 
... 
$ git lg 
Full command: git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative 
... 

biệt hiệu là rất thuận tiện, nhưng tôi muốn tìm hiểu/được nhắc nhở gì bí danh của tôi thực sự làm (hầu hết các bí danh của tôi được sao chép từ Internet)

Trả lời

2

Như một ví dụ:

log-1 = "!sh -c 'echo \"Full command: git log --graph --decorate --pretty=oneline --abbrev-commit\"; git log --graph --decorate --pretty=oneline --abbrev-commit' -"

Bạn gọi trình bao và thực thi các lệnh đã cho.

Trong ví dụ về lg của bạn, bạn sẽ phải thực hiện rất nhiều thoát khi bạn có dấu ngoặc kép bên trong các dấu và ký tự cần phải được thoát. Tôi khuyên bạn nên tạo định dạng đẹp của riêng mình và sử dụng định dạng đó trong bí danh. Giả sử chúng tôi gọi định dạng của bạn là của tôi. Đây là những gì bạn cần làm:

git config --add pretty.mine "%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset"

và bí danh sẽ

lg = "!sh -c 'echo \"Full command: git log --graph --pretty=mine --abbrev-commit --date=relative\"; git log --graph --pretty=mine --abbrev-commit --date=relative' -"

0

Nếu bạn đang sử dụng bash bạn có thể thêm "thiết lập -x" với bí danh. Vì vậy, như một ví dụ đơn giản, nếu bạn có một bí danh:

ol = !sh -c 'git log --oneline' 

bạn muốn thay đổi nó thành:

ol = "!sh -c 'set -x; git log --oneline'" 

Nó cần trong ngoặc kép quanh vì dấu chấm phẩy.

Để cho phép phần còn lại của dòng lệnh, bạn sẽ thêm "$ @" và cũng đặt "-" để đối số bắt đầu từ $ 1. Điều này cung cấp cho bạn:

ol = "!sh -c 'set -x; git log --oneline [email protected]' -" 

Bí danh phức tạp hơn có thể sẽ có nội dung này.

Tôi không biết cách nào để thiết lập tính năng này trên toàn cầu cho tất cả các bí danh mặc dù nó sẽ rất hay để có!

EDIT: Điều này thực sự hoạt động dễ dàng hơn một chút khi sử dụng chức năng trình bao thay thế. Bạn có thể làm điều gì đó như:

git config alias.ol '!f() { set -x; git log --oneline [email protected]; }; f' 

để có hiệu ứng tương tự như trên.

+0

Tôi không chắc liệu nó có hoạt động với bí danh git hay không (ví dụ: những người được xác định trong cấu hình git) – CharlesB

+0

Nó sẽ. Đó là nơi tôi đã thử nghiệm nó. – seumasmac

+0

Tôi có nghĩa là nếu git đăng nhập bí danh để git đăng nhập --oneline ** trong git config **, nó sẽ hoạt động? – CharlesB

3

Một lựa chọn khác là ý tưởng lệnh liệt kê trong phần wiki Git trên Aliases Mà cho, cho phần alias của .git/config

[alias]

aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' 

này sau đó liệt kê tất cả các bí danh của bạn như dòng lệnh.