Git'teki komutları nasıl diğer adıma yazarım?


619

Birisinin aldığı bir screencast gördüm

git st
git ci

çalışmak. Bunu yaptığımda bana başka bir şey ifade edip etmediğimi soran bir hata alıyorum.
Git bir yenisi olarak, bunu yapmak için ne yapmanız gerektiğini bilmem gerekir?


1
Ayrıca burada da görebilirsiniz- scm.com
book/

Ayrıca git takma adının daha gelişmiş kullanımı ile ilgili diğer sorulara da buradan ulaşabilirsiniz: stackoverflow.com/questions/46528736/…
NeilG

Yanıtlar:


977

Temel olarak, sadece ~/.gitconfig

[alias]
    st = status
    ci = commit -v

Veya git config alias komutunu kullanabilirsiniz:

$ git config --global alias.st status 

Unix'te, takma adda boşluk varsa tek tırnak kullanın:

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

Pencerelerde, takma adda boşluk veya komut satırı bağımsız değişkeni varsa çift tırnak kullanın:

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

Alias ​​komutu işlevleri parametre olarak kabul eder. Takma adlara bir göz atın .


86
Mevcut deponuz yerine git config --globaltakma adları yerleştirmenizi tavsiye ederim . ~/.gitconfig.git/config
Cascabel

27
Ayarları tercih stetmek status -s(kısa statü)
Hasen

20
Bu gerçekten harika. Bunu arıyordum. Sadece bir kafa yukarı, boşluklar ile bir komut varsa, 'gibi kullanmalısınızgit config --global alias.sr 'svn rebase'
Amir Raminfar

1
@HellishHeat Bu diğer adlar git için git tarafından oluşturulur. Başka bir komut satırı sistemi için takma adlar istiyorsanız, o sistemi nasıl yapacağınıza bakmanız gerekir. (Unix benzeri bir sistem kullanıyor gibi görünüyorsunuz ve Unices'te takma ad oluşturmanın oldukça basit olduğunu biliyorum. Sözdizimi farklı olsa da. Google araması yapmayı deneyin.)
Michael Dorst

17
Başka bir uyarı, Git'i Windows komut satırında kullanıyorsanız ", boşluklarla komut eklerken tek tırnak yerine çift ​​tırnak kullanmanız gerekir , örn.git config --global alias.ci "commit -v"
ABVincita

179

Diğerlerinin söylediği gibi git takma adları eklemenin uygun yolu global .gitconfigdosyanızda düzenleyerek ~/.gitconfigveya git config --global alias.<alias> <git-command>komutu kullanarak

Aşağıda, dosyamın takma ad bölümünün bir kopyası var ~/.gitconfig:

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

Ayrıca, bash kullanıyorsanız git-completion.bash, ana dizininize kopyalayıp kaynak kodunuzdan kaynak alarak bash tamamlamayı ayarlamanızı öneririm ~/.bashrc. (Bunu Pro Git çevrimiçi kitabından öğrendiğime inanıyorum .) Mac OS X'te bunu aşağıdaki komutlarla başardım:

# 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

Not: Bash tamamlama yalnızca standart git komutları için değil, aynı zamanda git diğer adlarınız için de çalışır.

Son olarak, tuş vuruşlarını gerçekten kısmak için, dosyama aşağıdakilerden ~/.bash_aliaseskaynaklanmış olan dosyayı ekledim ~/.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
Linux için bunu git-completion.bash şeyler almak için yaptım: blogs.oracle.com/linuxnstuff/entry/…
Duncan Lock

10
Eğer zsh kullanıyorsanız, mükemmel oh-my-zsh paketi bash için tüm bu "standart" git takma adlarıyla bir eklenti içerir - github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/… - github.com/revans/bash-it adresine
jobwat

noob soru: ~/.bashrcdosyadan kaynaklanmak ne demektir ?
ahnbizcad

1
~/.bashrc: tuş vuruşlarını gerçekten kesmek için. Tam olarak ne aradığını.
parasrish

Bu cevap, cevabımda bir .gitconfig içerme nedenini önermemin mükemmel bir örneğidir! stackoverflow.com/a/59896430/117471
Bruno Bronosky

65

Bence en kullanışlı gitconfig böyle, biz her zaman git% 20 işlevini kullanın, "g ll" deneyebilirsiniz, şaşırtıcı, ayrıntılar:

[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

bunu nasıl ayarladın? bunu yapmak için nereye koyarsın?
ahnbizcad

3
@ahnbizcad config --global komutunu kullanırsanız ~ / .gitconfig dizinine yerleştirin, aksi takdirde geçerli deponun .git / config komutuna gider
shmup

19

git config aliasKomuta ihtiyacınız var . Git deposunda aşağıdakileri yürütün:

git config alias.ci commit

Global takma ad için:

git config --global alias.ci commit

11

Bu benim için çalıştı:

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

tarih:

$ git --version

git version 1.7.7.5 (Apple Git-26)

1
Ayrıca şunları da yapabilirsiniz: git config --global alias.bco 'checkout -b'. Sonra yapabilirsin: git bco yeni şube. :)
Russell

4
Sevdim git cob. bana koçanın mısırında olduğu gibi yaz hatırlatıyor. aslında yeterince düşünmediğimiz harika bir kelime ... koçanı
Мати Тернер

4
Benden başka birisinin ilk olarak bir git alias komutu ile karşılaşması durumunda !, Since version 1.5.0, Git supports aliases executing non-git commands, by prefixing the value with "!"( ref )
Sam

9

Bu, aşağıdakiler için bir takma ad stoluşturur status:

git config --add alias.st status


Ben --add ve kullanımı çift tırnak, tek değil tırnak gerekli
Bağlantısızlar

Neden git stkullanırken git s, bundan kurtulun s: P
Abdullah

7

Follwing, zaman kazanmak için kullanacağınız 4 git kısayolu veya takma addır.

Komut satırını açın ve bunları 4 komutun altına yazın ve ardından gelen kısayolları kullanın.

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

Şimdi onları test edin!

$ 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

Git takma adında kabuk komutları yürütmek isteyenler için, örneğin:

$ git pof

Terminalimde mevcut şubeyi kökeni repoma zorlayacak :

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

Nerede

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

komutu geçerli dalı döndürür.

Bu, şube adını manuel olarak yazmak için bir kısayoldur:

git push origin -f <current-branch>

1
Neden git push -f origin HEADgeçerli dalı uzaktaki karşılığına itmek için "basit" değilsiniz ? Ayrıca, zorla zorlamak için bir kısayol? Bir kısayoldan faydalanmak için yeterince sık güç uygulamanız gerekiyorsa, kurulumunuzda veya iş akışınızda başka bir şey yok mu?
RomainValeri

Bash takma adı oluşturdu ( !gitson git komutuyla değiştirildi ), ancak yapılandırma dosyasını manuel olarak düzenlemek hile yaptı.
H. de Jonge

5

Git ve git olmayan komutların diğer adlarını kullanabilirsiniz. Bu, sürüm 1.5'te eklenmiş gibi görünüyor. git config --helpMac bilgisayarımdaki 2.5.4 sürümündeki sayfadan bir pasaj şunları gösterir:

Takma ad genişletmesinin önüne bir ünlem işareti gelirse, kabuk komutu olarak değerlendirilir.

Örneğin, global .gitconfigdosyanızda şunlar olabilir:

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

Ve sonra onları çalıştırın:

$ git hi
hello
$ git st
On branch master

...

5

Ana dizininizdeki ~ / .gitconfig dosyasına aşağıdaki satırları ekleyin

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

Bu yapıldıktan sonra, örneğin git ayerine yapabilirsiniz git add. Aynısı diğer ad başlığı altındaki diğer komutlar için de geçerlidir.


4
$ git update
git: 'update' bir git komutu değildir. Bkz. 'Git --help'.

Bunu mu demek istediniz?
    update-ref

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

$ git update
Git: //git.kernel.org/pub/scm/git/git
 = [güncel] html -> orijin / html
 = [güncel] maint -> başlangıç ​​/ maint
 = [güncel] erkek -> kökeni / erkek
 = [güncel] ana -> başlangıç ​​/ ana
 = [güncel] sonraki -> başlangıç ​​/ sonraki
 = [güncel] pu -> orijin / pu
 = [güncel] yapılacaklar -> kökeni / yapılacaklar
Zaten güncel.

4

dogGünlük grafiğini göstermek için takma ad oluşturdum :

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

Ve aşağıdaki gibi kullanın:

git dog

3

'!' Kullanırsanız komutları da zincirleyebilirsiniz. kabuk oluşturmak için operatör:

aa = !git add -A && git status

Bu, hem tüm dosyaları ekler hem de ile bir durum raporu verir $ git aa.

Takma adlarınızı kontrol etmenin kullanışlı bir yolu için bu takma adı ekleyin:

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

Sonra hızlı bir $ git aliasşekilde mevcut takma adlarınızı ve ne yaptıklarını verir.


3

Git'in config özelliğini kullanarak özel git diğer adları ayarlayabilirsiniz. İşte sözdizimi:

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

Örneğin, birleştirme çakışmaları olan dosyaların listesini görüntülemek için bir takma ada ihtiyacınız varsa, şunu çalıştırın:

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

Şimdi yukarıdaki komutu sadece "çakışmalar" kullanarak kullanabilirsiniz:

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

3

Benim için ( terminal ile mac kullanıyorum ) sadece .bash_profile üzerine eklediğimde ve değişikliği yüklemek için başka bir sekme açtığımda çalıştı :

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

Diğer adları diğer cevaplarda belirtilen standart git config yolundan bile daha kısa almak için , çoğu komut 2 kelime yerine 2 karakter olacak şekilde bir npm paketi mingit ( npm install -g mingit) oluşturdum . İşte örnekler:

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

ve diğer komutlar da benzer şekilde kısa olur. Bu ayrıca bash tamamlamalarını tutar. Paket nokta dosyalarınıza bir bash işlevi ekler, osx, linux ve windows üzerinde çalışır. Ayrıca, diğer takma adlardan farklı olarak, takma adlar git-> gyanı sıra ikinci parametre.


1
Github projesini oluşturduğunuz için teşekkür ederiz.
biniam

2

Seçeneğe bir alternatif istiyorsanız ~/.gitconfigve biraz daha kazmaya açıksanız, başka bir seçenek de global bir düğüm paketine sararak tamamen özel git komutları yazmaktır.

Package.json dosyasında root komutunu (örnek:) tanımlar gtve ardından doğru git komutlarını yürütmek için belirli komutlara filtre uygularsınız. Örneğin, git checkout my-brancholabilir gt co mybranch.

Npm'deki "christian-git" paketi şu yöntemi kullanır: https://github.com/alexmacarthur/christian-git


1

Burada takma adlar verildi.Burada harika cevaplar olsa bile, bunu ekledim çünkü windows ve linux'da farklı



1

Birden çok takma ad dosyası ekleyin .gitconfig

Takma adlarınız için bir .gitconfig içerme kullanmanızı öneririm . Takma ad oluşturmaya başladığınızda, muhtemelen birçoğu ile karşılaşacaksınız. Muhtemelen başkalarıyla paylaşmak istediğiniz bir şey olacaktır. Bunları özel bir dosyaya koymak, paylaşmayı kolaylaştırır. Ekibiniz paylaşılan takma adları tutmak için bir git repo bile kullanabilir. Ve elbette paylaşmak istemeyeceğiniz bazı takma adlar, bu yüzden onları özel bir takma ad dosyasında saklayın.

[include]
    path=src/dotfiles/.gitaliases

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

[include]
    path=.gitaliases.private

-1

Windows için başka bir olasılık, kısayollarınızda bulunan .bat dosyalarıyla dolu bir dizine sahip olmaktır. Dosyanın adı kullanılacak kısayoldur. Basitçe dizini PATH ortam değişkeninize ekleyin ve cmd penceresinde tüm kısayollara sahipsiniz.

Örneğin (gc.bat):

git commit -m %1

Sonra konsolda aşağıdaki komutu yürütebilirsiniz:

gc "changed stuff"

Bunu yanıt olarak eklememin nedeni, bunu kullanırken git ...yalnızca komutlarla sınırlı olmamanızdır .


1
Sisteminize bağlı olarak .profile veya .bashrc veya .bash_profile öğenize kabuk takma adları ekleyerek de bunu yapabilirsiniz. Sonra tüm takma adlarınız tek bir dosyadadır. Ayrıca, görevinizi gerçekleştirmenin standart mekanizması budur. "Komut takma adları" bölümü , git komutları için kullanılan bazı genel olarak tanımlanmış kabuk takma adlarını gösterir . Bu konuda daha iyi kaynaklar ve öğreticiler var, bu sadece açık bir bağlantı olur.
SherylHohman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.