Làm thế nào để tôi bí danh các lệnh trong git?


619

Tôi đã nhìn thấy một screencast nơi ai đó đã nhận được

git st
git ci

làm việc. Khi tôi làm điều đó, tôi nhận được một lỗi hỏi tôi nếu tôi có ý gì khác.
Là một người mới, tôi cần biết bạn phải làm gì để hoàn thành nó?


1
Bạn cũng có thể xem nó ở đây git-scm.com/book/en/v2/Git-Basics-Git-Aliases
JayRizzo

Ngoài ra, hãy xem thêm câu hỏi về cách sử dụng bí danh git nâng cao hơn tại đây: stackoverflow.com/questions/46528736/
mẹo

Câu trả lời:


977

Về cơ bản bạn chỉ cần thêm dòng vào ~/.gitconfig

[alias]
    st = status
    ci = commit -v

Hoặc bạn có thể sử dụng lệnh git config alias:

$ git config --global alias.st status 

Trên unix, sử dụng dấu ngoặc đơn nếu bí danh có khoảng trắng:

$ git config --global alias.ci 'commit -v'

Trên cửa sổ, sử dụng dấu ngoặc kép nếu bí danh có khoảng trắng hoặc đối số dòng lệnh:

c:\dev> git config --global alias.ci "commit -v"

Lệnh bí danh thậm chí chấp nhận các chức năng như các tham số. Hãy nhìn vào bí danh .


86
Tôi đặc biệt khuyên bạn nên sử dụng git config --globalđể đặt các bí danh ~/.gitconfigthay vì .git/configcho kho lưu trữ hiện tại của bạn.
Cascabel

27
Tôi thích thiết lập stđể status -s(status ngắn)
Hasen

20
Điều này thực sự tuyệt vời. Tôi đã tìm kiếm điều này. Chỉ cần ngẩng cao đầu, nếu bạn có một lệnh có khoảng trắng bạn nên sử dụng 'nhưgit config --global alias.sr 'svn rebase'
Amir Raminfar

1
@HellishHeat Những bí danh này được tạo bởi git, cho git. Nếu bạn muốn bí danh cho một số hệ thống dòng lệnh khác, bạn sẽ phải tìm cách làm hệ thống đó. (Bạn dường như đang sử dụng một hệ thống giống Unix và tôi tình cờ biết rằng việc tạo bí danh trên Unices khá đơn giản. Tuy nhiên, cú pháp khác nhau. Hãy thử tìm kiếm trên Google.)
Michael Dorst

17
Chỉ là một người đứng đầu lên, nếu bạn đang sử dụng Git trên dòng lệnh Windows, sau đó bạn sẽ cần phải sử dụng dấu ngoặc kép "thay vì dấu nháy đơn khi thêm lệnh với không gian, ví dụ nhưgit config --global alias.ci "commit -v"
ABVincita

179

Như những người khác đã nói cách thích hợp để thêm bí danh git là trong .gitconfigtệp toàn cầu của bạn bằng cách chỉnh sửa ~/.gitconfighoặc bằng cách sử dụng git config --global alias.<alias> <git-command>lệnh

Dưới đây là bản sao của phần bí danh trong ~/.gitconfigtệp của tôi :

[alias]
    st = status
    ci = commit
    co = checkout
    br = branch
    unstage = reset HEAD --
    last = log -1 HEAD

Ngoài ra, nếu bạn đang sử dụng bash, tôi khuyên bạn nên thiết lập hoàn thành bash bằng cách sao chép git-completion.bashvào thư mục chính của bạn và tìm nguồn từ nó ~/.bashrc. (Tôi tin rằng tôi đã học được điều này từ cuốn sách trực tuyến Pro Git .) Trên Mac OS X, tôi đã thực hiện điều này bằng các lệnh sau:

# Copy git-completion.bash to home directory
cp usr/local/git/contrib/completion/git-completion.bash ~/

# Add the following lines to ~/.bashrc
if [ -x /usr/local/git/bin/git ]; then
    source ~/.git-completion.bash
fi

Lưu ý: Việc hoàn thành bash sẽ hoạt động không chỉ cho các lệnh git tiêu chuẩn mà còn cho các bí danh git của bạn.

Cuối cùng, để thực sự cắt giảm các tổ hợp phím, tôi đã thêm phần sau vào ~/.bash_aliasestệp của mình , có nguồn gốc từ ~/.bashrc:

alias gst='git status'
alias gl='git pull'
alias gp='git push'
alias gd='git diff | mate'
alias gau='git add --update'
alias gc='git commit -v'
alias gca='git commit -v -a'
alias gb='git branch'
alias gba='git branch -a'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcot='git checkout -t'
alias gcotb='git checkout --track -b'
alias glog='git log'
alias glogp='git log --pretty=format:"%h %s" --graph'

2
Đối với linux, tôi đã làm điều này để có được công cụ git- xong.bash
Khóa Duncan

10
Nếu bạn sử dụng zsh, bộ oh-my-zsh tuyệt vời chứa một plugin với tất cả các bí danh git "tiêu chuẩn" - github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/ tựa - cho bash , hãy xem github.com/revans/bash-it
jobwat

Câu hỏi noob: ~/.bashrctập tin "có nguồn gốc từ" nghĩa là gì?
ahnbizcad

1
~/.bashrc: để thực sự cắt giảm các nét chính. Chính xác những gì đang tìm kiếm.
ký sinh

Câu trả lời này là một ví dụ hoàn hảo về lý do tại sao tôi đề nghị sử dụng .gitconfig bao gồm trong câu trả lời của tôi! stackoverflow.com/a/59896430/117471
Bruno Bronosky

65

Tôi nghĩ gitconfig hữu ích nhất là như thế này, chúng tôi luôn sử dụng hàm 20% trong git, bạn có thể thử "g ll", thật tuyệt vời, chi tiết:

[user]
    name = my name
    email = me@example.com
[core]  
    editor = vi 
[alias]
    aa = add --all
    bv = branch -vv
    ba = branch -ra
    bd = branch -d
    ca = commit --amend
    cb = checkout -b
    cm = commit -a --amend -C HEAD
    ci = commit -a -v
    co = checkout
    di = diff
    ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
    ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph
    ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative
    mm = merge --no-ff
    st = status --short --branch
    tg = tag -a 
    pu = push --tags
    un = reset --hard HEAD  
    uh = reset --hard HEAD^
   [color]  
    diff = auto  
    status = auto  
    branch = auto 
   [branch]  
    autosetuprebase = always

Làm thế nào để bạn thiết lập điều này? Bạn đặt cái gì để làm cái này vậy?
ahnbizcad

3
@ahnbizcad Đặt trong ~ / .gitconfig nếu bạn git config --global nếu không nó sẽ vào .git / config của kho lưu trữ hiện tại
shmup

19

Bạn cần git config aliaslệnh. Thực hiện các thao tác sau trong kho Git:

git config alias.ci commit

Đối với bí danh toàn cầu:

git config --global alias.ci commit

11

Điều này làm việc cho tôi:

bco = "!f(){ git branch ${1} && git checkout ${1}; };f"

trên:

$ git --version

git version 1.7.7.5 (Apple Git-26)

1
bạn cũng có thể làm: git config --global alias.bco 'checkout -b'. Sau đó, bạn có thể làm: git bco new-Branch. :)
Russell

4
Tôi thích git cob. làm tôi nhớ đến mùa hè, như trong bắp ngô. thực sự là một từ lớn chúng ta không suy nghĩ về đủ ... lõi ngô đó là
Мати Тернер

4
Trong trường hợp đây là lần đầu tiên bất kỳ ai khác ngoài tôi thấy lệnh git alias bắt đầu bằng !, hãy lưu ý rằng Since version 1.5.0, Git supports aliases executing non-git commands, by prefixing the value with "!"( ref )
Sam

9

Điều này sẽ tạo ra một bí danh stcho status:

git config --add alias.st status


Tôi cần --add và sử dụng dấu ngoặc kép, không phải dấu ngoặc đơn
Sắp xếp

Tại sao git stkhi bạn có thể sử dụng git s, hãy loại bỏ nó s: P
Abdullah

7

Follwing là 4 phím tắt git hoặc bí danh bạn sử dụng để tiết kiệm thời gian.

Mở dòng lệnh và gõ 4 lệnh dưới đây và sử dụng các phím tắt sau.

git config --global alias.co checkout  
git config --global alias.ci commit    
git config --global alias.st status    
git config --global alias.br branch  

Bây giờ hãy kiểm tra chúng!

$ git co              # use git co instead of git checkout
$ git ci              # use git ci instead of git commit
$ git st              # use git st instead of git status
$ git br              # use git br instead of git branch

6

Ví dụ, đối với những người đang tìm cách thực thi các lệnh shell trong bí danh git :

$ git pof

Trong thiết bị đầu cuối của tôi sẽ đẩy chi nhánh hiện tại đến repo gốc của tôi:

[alias]
    pof = !git push origin -f $(git branch | grep \\* | cut -d ' ' -f2)

Ở đâu

$(git branch | grep \\* | cut -d ' ' -f2)

lệnh trả về nhánh hiện tại.

Vì vậy, đây là một phím tắt để nhập tên chi nhánh theo cách thủ công:

git push origin -f <current-branch>

1
Tại sao không "đơn giản" git push -f origin HEADđể đẩy chi nhánh hiện tại đến đối tác từ xa của nó? Ngoài ra, một phím tắt để đẩy với lực? Nếu bạn phải đẩy lực thường xuyên đủ để hưởng lợi từ một phím tắt, thì có phải điều gì đó không ổn ở nơi khác trong thiết lập hoặc quy trình làm việc của bạn không?
RomainValeri

Bash chia lưới tạo ra bí danh (thay thế !gitbằng lệnh git cuối cùng), nhưng chỉnh sửa thủ công tệp cấu hình đã thực hiện thủ thuật.
H. de Jrid

5

Bạn có thể bí danh cả hai lệnh git và không git. Có vẻ như điều này đã được thêm vào trong phiên bản 1.5. Một đoạn trích từ git config --helptrang trên phiên bản 2.5.4 trên máy Mac của tôi hiển thị:

Nếu việc mở rộng bí danh được bắt đầu bằng dấu chấm than, nó sẽ được coi là lệnh shell.

Ví dụ: trong .gitconfigtệp toàn cầu của bạn, bạn có thể có:

[alias]
    st = status
    hi = !echo 'hello'

Và sau đó chạy chúng:

$ git hi
hello
$ git st
On branch master

...

5

Thêm các dòng sau vào ~ / .gitconfig trong thư mục chính của bạn

[alias]
# one-line log
l = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph
ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative

a = add
ap = add -p
c = commit --verbose
ca = commit -a --verbose
cm = commit -m
cam = commit -a -m
m = commit --amend --verbose

d = diff
ds = diff --stat
dc = diff --cached

s = status -s
co = checkout
cob = checkout -b
# list branches sorted by last modified
b = "!git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's-refs/heads/--'"

# list aliases
la = "!git config -l | grep alias | cut -c 7-"

Khi đã xong, bạn có thể làm git athay vì git addví dụ. Điều tương tự cũng áp dụng cho các lệnh khác dưới tiêu đề bí danh ..


4
cập nhật $ git
git: 'update' không phải là lệnh git. Xem 'git - trợ giúp'.

Ý bạn là sao?
    cập nhật-ref

$ git config - bí danh toàn diện.update 'pull -v'

cập nhật $ git
Từ git: //git.kernel.org/pub/scm/git/git
 = [cập nhật] html -> origin / html
 = [cập nhật] duy trì -> nguồn gốc / duy trì
 = [cập nhật] người đàn ông -> nguồn gốc / người đàn ông
 = [cập nhật] chủ -> nguồn gốc / chủ
 = [cập nhật] tiếp theo -> nguồn gốc / tiếp theo
 = [cập nhật] pu -> nguồn gốc / pu
 = [cập nhật] việc cần làm -> nguồn gốc / việc cần làm
Đã cập nhật.

4

Tôi đã tạo bí danh dogđể hiển thị biểu đồ nhật ký:

git config --global alias.dog "log --all --decorate --oneline --graph"

Và sử dụng nó như sau:

git dog

3

Bạn cũng có thể xâu chuỗi các lệnh nếu bạn sử dụng '!' Toán tử để sinh ra một vỏ:

aa = !git add -A && git status

Điều này sẽ thêm tất cả các tệp và cung cấp cho bạn một báo cáo trạng thái với $ git aa.

Để biết cách tiện dụng để kiểm tra bí danh của bạn, hãy thêm bí danh này:

alias = config --get-regexp ^alias\\.

Sau đó, nhanh chóng $ git aliascung cấp cho bạn bí danh hiện tại của bạn và những gì họ làm.


3

Bạn có thể đặt bí danh git tùy chỉnh bằng cấu hình của git. Đây là cú pháp:

git config --global alias.<aliasName> "<git command>"

Ví dụ: nếu bạn cần một bí danh để hiển thị danh sách các tệp có xung đột hợp nhất, hãy chạy:

git config --global alias.conflicts "diff --name-only --diff-filter=U"

Bây giờ bạn chỉ có thể sử dụng lệnh trên bằng cách sử dụng "xung đột":

git conflicts
# same as running: git diff --name-only --diff-filter=U

3

Đối với tôi ( tôi đang sử dụng mac với thiết bị đầu cuối ) chỉ hoạt động khi tôi thêm vào .bash_profile và mở một tab khác để tải thay đổi:

alias gst="git status"
alias gd="git diff"
alias gl="git log"
alias gco="git commit"
alias gck="git checkout"
alias gl="git pull"
alias gpom="git pull origin master"
alias gp="git push"
alias gb="git branch"

2

Chỉ để có được các bí danh thậm chí ngắn hơn cách cấu hình git tiêu chuẩn được đề cập trong các câu trả lời khác, tôi đã tạo một gói npm mingit ( npm install -g mingit) để hầu hết các lệnh sẽ trở thành 2 ký tự thay vì 2 từ. Đây là ví dụ:

g a .                   // git add .
g b other-branch        // git branch other-branch
g c "made some changes" // git commit -m "made some changes"
g co master             // git checkout master
g d                     // git diff
g f                     // git fetch
g i                     // git init 
g m hotfix              // git merge hotfix
g pll                   // git pull
g psh                   // git push
g s                     // git status

và các lệnh khác sẽ ngắn tương tự. Điều này cũng giữ cho bash hoàn thành. Gói thêm chức năng bash vào dotfiles của bạn, hoạt động trên osx, linux và windows. Ngoài ra, không giống như các bí danh khác, nó là bí danh git-> gcũng như tham số thứ hai.


1
Cảm ơn bạn đã tạo ra dự án github.
biniam

2

Nếu bạn muốn một lựa chọn thay thế cho ~/.gitconfigtùy chọn và mở ra để đào sâu thêm một chút, tùy chọn khác là viết các lệnh git hoàn toàn tùy chỉnh bằng cách gói chúng trong gói nút chung.

Trong gói.json của bạn, bạn sẽ xác định lệnh gốc (ví dụ gt:), sau đó lọc các lệnh cụ thể để thực hiện các lệnh git chính xác. Ví dụ, git checkout my-branchcó thể được gt co mybranch.

Gói "christian-git" trên npm sử dụng phương pháp này: https://github.com/alexmacarthur/christian-git


1

Nó được đưa ra ở đây Bí danh. Ngay cả khi có câu trả lời tuyệt vời ở đây, tôi đã thêm điều này vì nó khác với windows và linux



1

Bao gồm nhiều tệp bí danh trong của bạn .gitconfig

Tôi đề nghị sử dụng một .gitconfig bao gồm cho bí danh của bạn. Khi bạn bắt đầu tạo bí danh, có thể bạn sẽ kết thúc với rất nhiều trong số chúng. Họ có thể sẽ là một cái gì đó bạn muốn chia sẻ với người khác. Đặt chúng trong một tập tin chuyên dụng giúp bạn dễ dàng chia sẻ. Nhóm của bạn thậm chí có thể sử dụng repo git để giữ bí danh được chia sẻ. Và tất nhiên một số bí danh bạn sẽ không muốn chia sẻ, vì vậy hãy giữ chúng trong một tệp bí danh riêng tư.

[include]
    path=src/dotfiles/.gitaliases

[include]
    path=src/team-utils/gitaliases

[include]
    path=.gitaliases.private

-1

Một khả năng khác cho các cửa sổ là có một thư mục chứa đầy các tệp .bat có các phím tắt của bạn trong đó. Tên của tệp là lối tắt được sử dụng. Chỉ cần thêm thư mục vào biến môi trường PATH của bạn và bạn có tất cả các phím tắt để xử lý trong cửa sổ cmd.

Ví dụ: (gc.bat):

git commit -m %1

Sau đó, bạn có thể thực hiện lệnh sau trong bàn điều khiển:

gc "changed stuff"

Lý do tôi thêm điều này như một câu trả lời là vì khi sử dụng, bạn không bị giới hạn git ...chỉ với các lệnh.


1
Bạn có thể làm tương tự bằng cách thêm các bí danh shell vào .profile hoặc .bashrc hoặc .bash_profile của bạn, tùy thuộc vào hệ thống của bạn. Sau đó, tất cả các bí danh của bạn nằm trong một tệp duy nhất. Ngoài ra, đó là cơ chế tiêu chuẩn để hoàn thành nhiệm vụ của bạn. Phần "bí danh lệnh" hiển thị một số bí danh shell thường được sử dụng cho các lệnh git. Có nhiều tài nguyên và hướng dẫn tốt hơn về điều này, đây chỉ là một liên kết tôi đã mở.
SherylHohman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.