如何在git中别名命令?

我看到一段视频,有人

git st
git ci

工作。当我这样做时,我得到一个错误,问我是否意味着别的东西。
作为一个git新手,我需要知道你必须做些什么才能完成这件事?

315250 次浏览

基本上你只需要向~/.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命令甚至接受函数作为参数。看看别名

这将为status创建一个别名st

git config --add alias.st status

您需要git config alias命令。在Git存储库中执行以下操作:

git config alias.ci commit

对于全局别名:

git config --global alias.ci commit
$ git update
git: 'update' is not a git command. See 'git --help'.


Did you mean this?
update-ref


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


$ git update
From git://git.kernel.org/pub/scm/git/git
= [up to date]      html       -> origin/html
= [up to date]      maint      -> origin/maint
= [up to date]      man        -> origin/man
= [up to date]      master     -> origin/master
= [up to date]      next       -> origin/next
= [up to date]      pu         -> origin/pu
= [up to date]      todo       -> origin/todo
Already up-to-date.

正如其他人所说,添加git别名的适当方法是通过编辑~/.gitconfig或使用git config --global alias.<alias> <git-command>命令在全局.gitconfig文件中

下面是我的~/.gitconfig文件的别名部分的副本:

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

此外,如果您使用bash,我建议通过将git-completion.bash复制到您的主目录并从您的~/.bashrc中获取它来设置bash完成。(我相信我从progit在线书籍中学到了这一点。)在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'

这对我有效:

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

关于:

$ git --version


git version 1.7.7.5 (Apple Git-26)

这里给出了别名。即使这里有很好的答案,我添加这个是因为 它在windows和linux中不同

我认为最有用的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

以下是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

只是为了获得比其他答案中提到的标准git配置方式更短的别名,我创建了一个npm包明吉特npm install -g mingit),以便大多数命令将成为2个字符而不是2个单词。以下是示例:

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以及第二个参数。

您可以对git和非git命令进行别名。看起来这是在版本1.5中添加的。我的Mac上版本2.5.4上的git config --help页面片段显示:

如果别名扩展以感叹号为前缀,则将其视为shell命令。

例如,在您的全局.gitconfig文件中,您可以拥有:

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

然后运行它们:

$ git hi
hello
$ git st
On branch master


...

如果您使用'!'运算符生成shell,您也可以链接命令:

aa = !git add -A && git status

这将添加所有文件并为您提供带有$ git aa的状态报告。

为了方便地检查您的别名,请添加此别名:

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

然后快速$ git alias为您提供当前的别名以及它们的作用。

windows的另一种可能性是使用包含您的快捷方式的. bat文件的目录。文件的名称是要使用的快捷方式。只需将目录添加到您的PATH环境变量中,您就可以在cmd窗口中使用所有快捷方式。

例如(gc.bat):

git commit -m %1

然后您可以在控制台中执行以下命令:

gc "changed stuff"

我添加这个作为答案的原因是因为使用这个时,您不仅限于git ...命令。

对于那些想要在git别名中执行shell命令的人,例如:

$ 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>

如果您想要~/.gitconfig选项的替代方案并愿意进一步挖掘,另一种选择是通过将它们包装在全局节点包中来编写完全自定义的git命令。

在您的package.json中,您将定义root命令(例如:gt),然后过滤特定命令以执行正确的git命令。例如,git checkout my-branch可以是gt co mybranch

npm上的“christian-git”包使用这种方法:https://github.com/alexmacarthur/christian-git

您可以使用git的配置设置自定义git别名。这是语法:

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

例如,如果您需要一个别名来显示具有合并冲突的文件列表,请运行:

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

现在你只能使用“冲突”来使用上面的命令:

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

将以下行添加到主目录中的~/. 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。这同样适用于别名标题下的其他命令。

我的. gitconfig文件的PFA屏幕截图

使用以下别名

[alias]
cb = checkout branch
pullb = pull main branch

对我来说(我正在使用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"

我创建了别名dog来显示日志图:

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

并按如下方式使用它:

git dog

在您的.gitconfig中包含多个别名文件

我建议使用.gitconfig包括作为你的别名。一旦你开始创建别名,你可能会有很多别名。它们可能是你想与他人共享的东西。将它们放在专用文件中可以轻松共享。你的团队甚至可以使用git repo来保存共享别名。当然,有些别名你不想共享,所以请将它们保存在私人别名文件中。

[include]
path=src/dotfiles/.gitaliases


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


[include]
path=.gitaliases.private

单线设置

$ git config --global alias.co checkout && git config --global alias.br branch && git config --global alias.ci commit && git config --global alias.st status && git config --global alias.unstage 'reset HEAD --' && git config --global alias.last 'log -1 HEAD'

用法:

$ git st
$ git co
$ git br
$ git ci
$ git last
$ git unstage <file | dir>

一切都会变成:

$ cat ~/.gitconfig


[user]
name = Sample User
email = sample@gmail.com
[core]
filemode = false
compression = 1
quotepath = off
ignorecase = false
[color]
ui = auto
[alias]
co = checkout
br = branch
ci = commit
st = status
last = log -1 HEAD
unstage = reset HEAD --

希望这个更快。

alias s="git status"

你的手指会原谅你一生中给它带来的所有痛苦。

我将所有别名命令添加到用户目录(vim~/. file)中的. file中。

alias gs='git status'
alias gp='git pull'
alias gph='git push'
alias gd='git diff | mate'
alias gau='git add --update'
alias gc='git commit -m'
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'
alias gfo='git fetch origin'

然后,我在bash和zsh shell中添加了源命令。

在bash shell(vim~/. bashrc)中

source ~/.profile

在zsh shell(vim~/. zshrc)中

source ~/.profile

要在Git中创建任何别名,请使用以下命令:

git config --local alias.s status


git config --local alias.c commit
git s


On branch master


nothing to commit, working tree clean

git status


On branch master


nothing to commit, working tree clean