gitでコマンドをエイリアスするにはどうすればよいですか?


619

私は誰かが得たスクリーンキャストを見ました

git st
git ci

仕事に。それを行うと、他に何か意味があるかどうかを尋ねるエラーが表示されます。
git newbなので、これを実行するためにあなたがしなければならないことを知っている必要がありますか?


1
また、ここでそれを見ることができますgit-scm.com/book/en/v2/Git-Basics-Git-Aliases
JayRizzo

また、ここでgitのエイリアスのより高度な使用法についてさらに質問を参照してください。stackoverflow.com/questions/46528736/...
NeilG

回答:


977

基本的には、行を追加するだけです ~/.gitconfig

[alias]
    st = status
    ci = commit -v

または、git config aliasコマンドを使用できます。

$ git config --global alias.st status 

UNIXでは、エイリアスにスペースがある場合は一重引用符を使用します。

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

Windowsでは、エイリアスにスペースまたはコマンドライン引数がある場合は、二重引用符を使用します。

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

aliasコマンドは、関数をパラメーターとして受け入れます。エイリアスを見てください。


86
現在のリポジトリの代わりにを使用git config --globalしてエイリアスを配置することを強くお勧めします。~/.gitconfig.git/config
Cascabel

27
私は、設定を好むststatus -s(ショート状態)
HASEN

20
これは本当に素晴らしいです。私はこれを探していました。ただ、ヘッドアップ、あなたは、スペースでコマンドを持っている場合は、使用する必要があります'ようにgit config --global alias.sr 'svn rebase'
アミールRaminfar

1
@HellishHeatこれらのエイリアスは、git用にgitによって作成されます。他のコマンドラインシステムのエイリアスが必要な場合は、そのシステムでその方法を調べる必要があります。(Unixライクなシステムを使用しているようですが、Unicesでのエイリアスの作成は非常に簡単です。ただし、構文は異なります。Google検索を試してください。)
Michael Dorst

17
WindowsコマンドラインでGitを使用"している場合、スペースを含むコマンドを追加するときは、一重引用符ではなく二重引用符を使用する必要があります。例:git config --global alias.ci "commit -v"
ABVincita

179

他の人がgitエイリアスを追加する適切な方法は.gitconfig編集~/.gitconfigまたはgit config --global alias.<alias> <git-command>コマンドを使用してグローバルファイルにあると述べたように

以下は、私の~/.gitconfigファイルのエイリアスセクションのコピーです。

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

また、bashを使用している場合はgit-completion.bash、ホームディレクトリにコピーしてからソーシングしてbashの補完を設定することをお勧めします~/.bashrc。(これについてはPro Gitオンラインブックから学んだと思います。)Mac OS Xでは、次のコマンドを使用してこれを実現しました。

# 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

注: bash補完は、標準のgitコマンドだけでなく、gitエイリアスでも機能します。

最後に、実際にキーストロークを削減するために、以下の~/.bash_aliasesソースをファイルに追加しました~/.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の場合、私はgitの-completion.bashものを得るためにこれをした:blogs.oracle.com/linuxnstuff/entry/...
ダンカンロック

10
zshを使用する場合、優れたoh-my-zshスイートには、これらすべての「標準」のgitエイリアスを持つプラグインが含まれています-github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/…-bash用、github.com
revans /

noobの質問:~/.bashrcファイルの「ソース」とはどういう意味ですか?
ahnbizcad 2015

1
~/.bashrc:キーストロークを本当に減らすため。まさに探していたもの。
Parasrish 2017

この回答は、私の回答に.gitconfig includeを使用することをお勧めする理由の完璧な例です!stackoverflow.com/a/59896430/117471
Bruno Bronosky

65

最も便利なgitconfigは次のようになると思います。私たちは常にgitで20%の関数を使用しています。「g ll」を試すことができます。驚くべきことです。詳細:

[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

これをどのように設定しますか?これを作るために何をどこに置きますか?
ahnbizcad 2015

3
@ahnbizcad git config --globalの場合は〜/ .gitconfigに配置します。それ以外の場合は現在のリポジトリの.git / configに入ります
shmup

19

git config aliasコマンドが必要です。Gitリポジトリで以下を実行します。

git config alias.ci commit

グローバルエイリアスの場合:

git config --global alias.ci commit

11

これは私のために働きました:

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

オン:

$ git --version

git version 1.7.7.5 (Apple Git-26)

1
git config --global alias.bco 'checkout -b'も実行できます。その後、次のことができます:git bco new-branch。:)
ラッセル

4
好きgit cobです。穂軸のトウモロコシのように、夏を思い出させます。我々は十分に...穂軸について考えていない、実際に素晴らしい言葉
МатиТернер

4
これが私以外の誰かがで始まるgitエイリアスコマンドを初めて見た場合!Since version 1.5.0, Git supports aliases executing non-git commands, by prefixing the value with "!"ref
Sam

9

これは、エイリアスを作成しますstのためにstatus

git config --add alias.st status


--addを使用し、一重引用符ではなく二重引用符を使用する必要がありました
整列

なぜgit st使用できるgit sのにそれを取り除くのかs:P
アブドラ

7

以下は、時間を節約するために使用できる4つのgitショートカットまたはエイリアスです。

コマンドラインを開き、以下の4つのコマンドを入力し、その後ショートカットを使用します。

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

それらをテストしてください!

$ 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エイリアスシェルコマンド実行したい人のために、例えば:

$ git pof

私のターミナルでは、現在のブランチを私の起点リポジトリに強制的プッシュします:

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

どこ

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

コマンドは現在のブランチを返します。

したがって、これはブランチ名を手動で入力するためのショートカットです:

git push origin -f <current-branch>

1
git push -f origin HEAD現在のブランチをリモートの相手に「単純に」プッシュしないのはなぜですか?また、力で押すショートカットは?ショートカットを活用するために十分な頻度で力を押す必要がある場合、セットアップまたはワークフローの他の場所で何か問題がありませんか?
RomainValeri

Bashは、エイリアスの作成(!git最後のgitコマンドで置き換える)をメッシュ化しましたが、構成ファイルを手動で編集するとうまくいきました。
H. de Jonge

5

gitコマンドとgit以外のコマンドの両方にエイリアスを設定できます。これはバージョン1.5で追加されたようです。git config --help私のMacのバージョン2.5.4 のページの抜粋は、

エイリアス展開の前に感嘆符が付いている場合は、シェルコマンドとして扱われます。

たとえば、グローバル.gitconfigファイルで次のようにすることができます。

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

そしてそれらを実行します:

$ git hi
hello
$ git st
On branch master

...

5

次の行をホームディレクトリの〜/ .gitconfigに追加します。

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

それが完了したら、たとえば、git a代わりに行うことができますgit add。同じことがエイリアスの見出しの下の他のコマンドにも当てはまります。


4
$ git update
git: 'update'はgitコマンドではありません。「git --help」を参照してください。

もしかして?
    update-ref

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

$ git update
git://git.kernel.org/pub/scm/git/gitから
 = [最新] html-> origin / html
 = [最新] maint-> origin / maint
 = [最新]男->起源/男
 = [最新]マスター->起点/マスター
 = [最新]次-> origin / next
 = [最新] pu-> origin / pu
 = [最新] todo-> origin / todo
すでに最新です。

4

dogロググラフを表示するためのエイリアスを作成しました。

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

次のように使用します。

git dog

3

「!」を使用すると、コマンドをチェーンすることもできます シェルを生成する演算子:

aa = !git add -A && git status

これにより、すべてのファイルが追加され、でステータスレポートが表示され$ git aaます。

エイリアスを確認する便利な方法として、次のエイリアスを追加します。

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

次に、$ git alias現在のエイリアスとその機能について簡単に説明します。


3

gitの設定を使用してカスタムgitエイリアスを設定できます。構文は次のとおりです。

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

たとえば、マージの競合があるファイルのリストを表示するためにエイリアスが必要な場合は、次のコマンドを実行します。

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

これで、「conflicts」のみを使用して上記のコマンドを使用できます。

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

3

私(私はターミナルでMacを使用しています)は、.bash_profileを追加し、変更をロードするために別のタブを開いたときにのみ機能しました:

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

他の回答で述べられている標準のgit configの方法よりもさらに短いエイリアスを取得するために、ほとんどのコマンドが2ワードではなく2文字になるように、npmパッケージmingitnpm install -g mingit)を作成しました。次に例を示します。

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

他のコマンドも同様に短くなります。これにより、bashの補完も保持されます。パッケージは、ドットファイルにbash関数を追加し、osx、linux、およびWindowsで動作します。また、他のエイリアスとは異なり、エイリアスgit-> gと2番目のパラメーター。


1
githubプロジェクトを作成していただきありがとうございます。
ビニアム2016年

2

~/.gitconfigオプションの代替手段が必要で、もう少し掘り下げることを希望している場合、別のオプションは、グローバルノードパッケージでそれらをラップすることにより、完全にカスタムのgitコマンドを記述することです。

package.jsonで、ルートコマンド(例:)を定義しgt、特定のコマンドをフィルタリングして正しいgitコマンドを実行します。たとえば、にgit checkout my-branchなりますgt co mybranch

npmの「christian-git」パッケージはこのメソッドを使用しますhttps : //github.com/alexmacarthur/christian-git


1

ここにエイリアスが表示されます。ここには素晴らしい答えがありますが、WindowsとLinuxでは異なるため、これを追加しました



1

複数のエイリアスファイルを .gitconfig

エイリアスに.gitconfig はインクルードを使用することをお勧めします。エイリアスの作成を開始すると、おそらく多くのエイリアスが作成されます。彼らはおそらくあなたが他の人と共有したいものになるでしょう。それらを専用ファイルに入れると、簡単に共有できます。チームはgitリポジトリを使用して共有エイリアスを保持することもできます。もちろん、共有したくない一部のエイリアスはプライベートエイリアスファイルに保存してください。

[include]
    path=src/dotfiles/.gitaliases

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

[include]
    path=.gitaliases.private

-1

Windowsのもう1つの可能性は、ショートカットを含む.batファイルで満たされたディレクトリを持つことです。ファイルの名前は、使用するショートカットです。ディレクトリをPATH環境変数に追加するだけで、コマンドウィンドウですべてのショートカットにアクセスできます。

例(gc.bat):

git commit -m %1

次に、コンソールで次のコマンドを実行できます。

gc "changed stuff"

これを回答として追加する理由は、これを使用する場合、git ...コマンドだけに限定されないためです。


1
システムに応じて、.profile、.bashrc、または.bash_profileにシェルエイリアスを追加することで同じことができます。次に、すべてのエイリアスが1つのファイルに含まれます。また、これはタスクを実行するための標準的なメカニズムです。「コマンドエイリアス」セクションでは、gitコマンドに使用される一般的に定義されているシェルエイリアスをいくつか示します。これにはより良いリソースとチュートリアルがあります。これはたまたま私が開いていたリンクです。
SherylHohman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.