Bagaimana cara saya alias perintah di git?

619

Saya melihat screencast di mana seseorang mendapatkan

git st
git ci

bekerja. Ketika saya melakukannya saya mendapat pesan kesalahan menanyakan apakah saya bermaksud sesuatu yang lain.
Menjadi git newb, saya perlu tahu apa yang harus Anda lakukan untuk menyelesaikan ini?

MengembangkanChris
sumber
1
Anda juga dapat melihatnya di sini git-scm.com/book/en/v2/Git-Basics-Git-Aliases
JayRizzo
Lihat juga pertanyaan lebih lanjut tentang penggunaan lebih lanjut alias git di sini: stackoverflow.com/questions/46528736/…
NeilG

Jawaban:

977

Pada dasarnya Anda hanya perlu menambahkan baris ~/.gitconfig

[alias]
    st = status
    ci = commit -v

Atau Anda dapat menggunakan perintah git config alias:

$ git config --global alias.st status 

Pada unix, gunakan tanda kutip tunggal jika alias memiliki spasi:

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

Di windows, gunakan tanda kutip ganda jika alias memiliki spasi atau argumen baris perintah:

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

Perintah alias bahkan menerima fungsi sebagai parameter. Lihatlah alias .

Diego Dias
sumber
86
Saya sangat menyarankan Anda menggunakan git config --globaluntuk menempatkan alias ~/.gitconfigsebagai ganti .git/configuntuk repositori Anda saat ini.
Cascabel
27
Saya lebih suka pengaturan stuntuk status -s(status pendek)
Hasen
20
Ini sangat mengagumkan. Saya telah mencari ini. Hanya kepala, jika Anda memiliki perintah dengan spasi Anda harus menggunakan 'sepertigit config --global alias.sr 'svn rebase'
Amir Raminfar
1
@HellishHeat alias ini dibuat oleh git, untuk git. Jika Anda ingin alias untuk beberapa sistem baris perintah lainnya, Anda harus mencari cara melakukannya di sistem itu. (Anda tampaknya menggunakan sistem mirip Unix, dan kebetulan saya tahu bahwa membuat alias di Unices cukup sederhana. Sintaksnya berbeda. Coba pencarian Google.)
Michael Dorst
17
Hanya kepala lainnya, jika Anda menggunakan Git pada baris perintah Windows, maka Anda harus menggunakan tanda kutip ganda "sebagai ganti tanda kutip tunggal ketika menambahkan perintah dengan spasi, misalnyagit config --global alias.ci "commit -v"
ABVincita
179

Seperti yang orang lain katakan, cara yang tepat untuk menambahkan alias git ada di .gitconfigfile global Anda dengan mengedit ~/.gitconfigatau menggunakan git config --global alias.<alias> <git-command>perintah

Di bawah ini adalah salinan dari alias bagian dari ~/.gitconfigfile saya :

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

Juga, jika Anda menggunakan bash, saya akan merekomendasikan pengaturan penyelesaian bash dengan menyalin git-completion.bashke direktori home Anda dan mengambilnya dari ~/.bashrc. (Saya yakin saya mengetahui hal ini dari buku online Pro Git .) Di Mac OS X, saya menyelesaikan ini dengan perintah berikut:

# 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

Catatan: Penyelesaian bash akan bekerja tidak hanya untuk perintah standar git tetapi juga untuk alias git Anda.

Akhirnya, untuk benar-benar mengurangi penekanan tombol, saya menambahkan yang berikut ke ~/.bash_aliasesfile saya , yang bersumber dari ~/.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'
Matthew Rankin
sumber
2
Untuk linux, saya melakukan ini untuk mendapatkan hal-hal git-completion.bash: blogs.oracle.com/linuxnstuff/entry/…
Duncan Lock
10
Jika Anda menggunakan zsh, suite oh-my-zsh yang sangat baik berisi plugin dengan semua alias git "standar" - github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/… - for bash , lihat di github.com/revans/bash-it
jobwat
pertanyaan noob: apa artinya "bersumber dari" ~/.bashrcfile?
ahnbizcad
1
~/.bashrc: untuk benar-benar mengurangi stroke-stroke. Persis apa yang dicari.
parasrish
Jawaban ini adalah contoh sempurna mengapa saya menyarankan untuk menggunakan .gitconfig termasuk dalam jawaban saya! stackoverflow.com/a/59896430/117471
Bruno Bronosky
65

Saya pikir gitconfig yang paling berguna adalah seperti ini, kami selalu menggunakan fungsi 20% di git, Anda dapat mencoba "g ll", ini menakjubkan, detailnya:

[user]
    name = my name
    email = [email protected]
[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
wcc526
sumber
bagaimana Anda mengatur ini? apa yang Anda taruh di mana membuat ini begitu?
ahnbizcad
3
@ahnbizcad Tempat di ~ / .gitconfig jika Anda git config - global kalau tidak masuk. git / config dari repositori saat ini
shmup
19

Anda membutuhkan git config aliasperintah. Jalankan yang berikut ini di repositori Git:

git config alias.ci commit

Untuk alias global:

git config --global alias.ci commit
Alan Haggai Alavi
sumber
11

Ini bekerja untuk saya:

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

di:

$ git --version

git version 1.7.7.5 (Apple Git-26)
Nicolas Gramlich
sumber
1
Anda juga bisa melakukan: git config --global alias.bco 'checkout -b'. Maka Anda bisa melakukannya: git bco cabang baru. :)
Russell
4
Saya suka git cob. mengingatkan saya pada musim panas, seperti pada jagung rebus. sebenarnya kata yang bagus yang tidak kita pikirkan tentang cukup ... tongkol yang
Мати Тернер
4
Dalam hal ini adalah pertama kalinya orang lain selain saya telah melihat perintah git alias dimulai dengan !, perhatikan bahwa Since version 1.5.0, Git supports aliases executing non-git commands, by prefixing the value with "!"( ref )
Sam
9

Ini akan membuat alias st untuk status:

git config --add alias.st status

Nick Moore
sumber
Saya membutuhkan --add dan menggunakan tanda kutip ganda, bukan tanda kutip tunggal
Diselaraskan
Mengapa git stketika Anda bisa menggunakan git s, singkirkan itu s: P
Abdullah
7

Berikut ini adalah pintasan 4 git atau alias yang Anda gunakan untuk menghemat waktu.

Buka commandline dan ketik 4 perintah di bawah ini dan gunakan pintasan setelahnya.

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

Sekarang coba mereka!

$ 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
Prabhakar Undurthi
sumber
6

Bagi mereka yang ingin menjalankan perintah shell di alias git , misalnya:

$ git pof

Di terminal saya akan mendorong paksa cabang saat ini ke repo asal saya:

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

Dimana

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

perintah mengembalikan cabang saat ini.

Jadi ini adalah jalan pintas untuk mengetik nama cabang secara manual:

git push origin -f <current-branch>
Gus
sumber
1
Mengapa tidak "sekadar" git push -f origin HEADuntuk mendorong cabang saat ini ke mitra jarak jauh? Juga, jalan pintas untuk mendorong dengan paksa? Jika Anda harus mendorong kekuatan cukup sering untuk mendapatkan manfaat dari jalan pintas, bukankah ada sesuatu yang salah di tempat lain dalam pengaturan atau alur kerja Anda?
RomainValeri
Bash berjalin membuat alias (mengganti !gitdengan perintah git terakhir), tetapi secara manual mengedit file konfigurasi berhasil.
H. de Jonge
5

Anda bisa menggunakan perintah git dan non-git. Sepertinya ini ditambahkan di versi 1.5. Cuplikan dari git config --helphalaman pada versi 2.5.4 di Mac saya menunjukkan:

Jika ekspansi alias diawali dengan tanda seru, itu akan diperlakukan sebagai perintah shell.

Misalnya, dalam .gitconfigfile global Anda, Anda dapat memiliki:

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

Dan kemudian jalankan:

$ git hi
hello
$ git st
On branch master

...
mkobit
sumber
5

Tambahkan baris berikut ke ~ / .gitconfig di direktori home Anda

[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-"

Setelah selesai, Anda bisa melakukan git aalih - alih git addmisalnya. Hal yang sama berlaku untuk perintah lain di bawah tajuk alias ..

Stryker
sumber
4
Pembaruan $ git
git: 'update' bukan perintah git. Lihat 'git --help'.

Apakah maksud Anda ini?
    pembaruan-ref

$ git config --global alias.update 'pull -v'

Pembaruan $ git
Dari git: //git.kernel.org/pub/scm/git/git
 = [up to date] html -> asal / html
 = [up to date] Maint -> asal / Maint
 = [up to date] man -> origin / man
 = [up to date] master -> origin / master
 = [up to date] berikutnya -> asal / berikutnya
 = [up to date] pu -> asal / pu
 = [up to date] todo -> asal / todo
Sudah terkini.
Greg Bacon
sumber
4

Saya membuat alias doguntuk menampilkan grafik log:

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

Dan gunakan sebagai berikut:

git dog
Seyed Morteza Mousavi
sumber
3

Anda juga dapat mengaitkan perintah jika menggunakan '!' operator untuk menelurkan shell:

aa = !git add -A && git status

Ini akan menambah semua file dan memberi Anda laporan status $ git aa.

Untuk cara praktis memeriksa alias Anda, tambahkan alias ini:

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

Lalu quick $ git aliasmemberi Anda alias Anda saat ini dan apa yang mereka lakukan.

Joseph Cheek
sumber
3

Anda dapat mengatur alias git khusus menggunakan konfigurasi git. Inilah sintaksinya:

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

Misalnya, jika Anda memerlukan alias untuk menampilkan daftar file yang memiliki konflik gabungan, jalankan:

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

Sekarang Anda dapat menggunakan perintah di atas hanya menggunakan "konflik":

git conflicts
# same as running: git diff --name-only --diff-filter=U
Akshay Bosamiya
sumber
3

Bagi saya ( saya menggunakan mac dengan terminal ) hanya berfungsi ketika saya menambahkan .bash_profile dan membuka tab lain untuk memuat perubahan:

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"
Marina
sumber
2

Hanya untuk mendapatkan alias lebih pendek dari cara konfigurasi git standar yang disebutkan dalam jawaban lain, saya membuat paket npm mingit ( npm install -g mingit) sehingga sebagian besar perintah akan menjadi 2 karakter, bukan 2 kata. Inilah contohnya:

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

dan perintah lain akan sama pendeknya. Ini juga menyimpan penyelesaian bash. Paket menambahkan fungsi bash ke dotfiles Anda, berfungsi di osx, linux, dan windows. Juga, tidak seperti alias lainnya, alias git-> gdan juga parameter kedua.

ironisdiksi
sumber
1
Terima kasih telah membuat proyek github.
biniam
2

Jika Anda ingin alternatif untuk ~/.gitconfigopsi dan terbuka untuk menggali sedikit lebih banyak, opsi lain adalah menulis perintah git sepenuhnya kustom dengan membungkusnya dalam paket global node.

Di package.json Anda, Anda akan mendefinisikan perintah root (contoh gt:), dan kemudian memfilter perintah khusus untuk menjalankan perintah git yang benar. Sebagai contoh,git checkout my-branch bisa gt co mybranch.

Paket "christian-git" di npm menggunakan metode ini: https://github.com/alexmacarthur/christian-git

Alex MacArthur
sumber
1

Itu diberikan di sini alias. Bahkan ada jawaban yang bagus di sini, saya menambahkan ini karena berbeda di windows dan linux

madhu131313
sumber
1

Sertakan beberapa file alias di file Anda .gitconfig

Saya sarankan menggunakan .gitconfig menyertakan untuk alias Anda. Setelah Anda mulai membuat alias, Anda mungkin akan mendapatkan banyak alias. Mereka kemungkinan akan menjadi sesuatu yang ingin Anda bagikan dengan orang lain. Menempatkannya dalam file khusus memudahkan untuk berbagi. Tim Anda bahkan dapat menggunakan repo git untuk menyimpan alias bersama. Dan tentu saja beberapa alias yang tidak ingin Anda bagikan, jadi simpan di file alias pribadi.

[include]
    path=src/dotfiles/.gitaliases

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

[include]
    path=.gitaliases.private
Bruno Bronosky
sumber
-1

Kemungkinan lain untuk windows adalah memiliki direktori yang berisi file .bat yang memiliki pintasan di dalamnya. Nama file adalah jalan pintas untuk digunakan. Cukup tambahkan direktori ke variabel lingkungan PATH Anda dan Anda memiliki semua pintasan untuk dibuang di jendela cmd.

Misalnya (gc.bat):

git commit -m %1

Kemudian Anda dapat menjalankan perintah berikut di konsol:

gc "changed stuff"

Alasan saya menambahkan ini sebagai jawaban adalah karena ketika menggunakan ini Anda tidak terbatas pada git ...perintah saja.

Rick van Osta
sumber
1
Anda dapat melakukan hal yang sama dengan menambahkan alias shell ke .profile, atau .bashrc, atau .bash_profile Anda, tergantung pada sistem Anda. Maka semua alias Anda dalam satu file. Juga, itulah mekanisme standar untuk menyelesaikan tugas Anda. Bagian "command alias" menunjukkan beberapa alias shell yang didefinisikan umum digunakan untuk perintah git. Ada sumber daya dan tutorial yang lebih baik tentang ini, ini hanya sebuah tautan yang saya buka.
SherylHohman