How do I alias commands in git?
我看到一个电影放映,有人在那里
1 2 | git st git ci |
去工作。当我这样做的时候,我会有一个错误,问我是否还有别的意思。作为一个Git新手,我需要知道你要做什么才能做到这一点?
基本上,您只需要向
1 2 3 | [alias] st = status ci = commit -v |
或者可以使用git-config-alias命令:
1 | $ git config --global alias.st status |
号
在UNIX上,如果别名有空格,请使用单引号:
1 | $ git config --global alias.ci 'commit -v' |
在Windows上,如果别名有空格或命令行参数,请使用双引号:
1 | c:\dev> git config --global alias.ci"commit -v" |
。
alias命令甚至接受函数作为参数。看看别名。
正如其他人所说,添加Git别名的适当方法是在全局
以下是我的
1 2 3 4 5 6 7 | [alias] st = status ci = commit co = checkout br = branch unstage = reset HEAD -- last = log -1 HEAD |
另外,如果您正在使用bash,我建议您通过将
1 2 3 4 5 6 7 | # 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别名。
最后,为了真正减少击键次数,我在我的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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' |
我觉得最有用的Gitconfig是这样的,我们总是在Git中使用20%的函数,你可以试试"g ll",这很神奇,细节如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | [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 |
号
你需要
1 | git config alias.ci commit |
对于全局别名:
1 | git config --global alias.ci commit |
。
这对我很有用:
1 | bco ="!f(){ git branch ${1} && git checkout ${1}; };f" |
。
关于:
1 2 3 | $ git --version git version 1.7.7.5 (Apple Git-26) |
号
这将为
埃多克斯1〔3〕
您可以同时使用git和非git命令的别名。看起来这是在1.5版中添加的。我的Mac 2.5.4版上的
If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command.
号
例如,在全局
1 2 3 | [alias] st = status hi = !echo 'hello' |
号
然后运行它们:
1 2 3 4 5 6 | $ git hi hello $ git st On branch master ... |
号
下面是您用来节省时间的4个Git快捷键或别名。
打开命令行,在下面的4个命令中键入这些命令,然后使用快捷方式。
1 2 3 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 |
号
现在测试一下!
1 2 3 4 | $ 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 |
号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $ 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别名中执行shell命令的用户,例如:
1 | $ git pof |
号
在我的终端中,将强制当前分支到我的原始报告:
1 2 | [alias] pof = !git push origin -f $(git branch | grep \\* | cut -d ' ' -f2) |
号
在哪里
1 | $(git branch | grep \\* | cut -d ' ' -f2) |
命令返回当前分支。
这是手动键入分支名称的快捷方式:
1 | git push origin -f <current-branch> |
在主目录的~/.gitconfig中添加以下行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | [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的配置设置自定义git别名。语法如下:
1 | git config --global alias."<git command>" |
例如,如果需要别名来显示具有合并冲突的文件列表,请运行:
1 | git config --global alias.conflicts"diff --name-only --diff-filter=U" |
号
现在,您只能使用"冲突"来使用上述命令:
1 2 | git conflicts # same as running: git diff --name-only --diff-filter=U |
为了使别名比其他答案中提到的标准git配置方法更短,我创建了一个NPM包mingit(
1 2 3 4 5 6 7 8 9 10 11 | 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上工作。此外,与其他别名不同,它的别名为
如果使用"!",也可以链接命令。要生成外壳的运算符:
1 | aa = !git add -A && git status |
号
这将添加所有文件,并向您提供带有
要方便地检查别名,请添加此别名:
1 | alias = config --get-regexp ^alias\\. |
号
然后一个快速的
这里有别名。即使这里有很好的答案,我添加这个是因为它在Windows和Linux中有所不同
对于我(我使用的是带有终端的Mac),只有当我添加了.bash_配置文件并打开另一个选项卡来加载更改时才有效:
1 2 3 4 5 6 7 8 9 | 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" |
。
Windows的另一种可能是在目录中填入.bat文件,这些文件中有您的快捷方式。文件名是要使用的快捷方式。只需将目录添加到PATH环境变量中,就可以在命令窗口中使用所有的快捷方式进行处理。
例如(gc.bat):
1 | git commit -m %1 |
然后可以在控制台中执行以下命令:
1 | gc"changed stuff" |
。
我之所以添加这个作为答案,是因为使用这个命令时,您不仅限于
如果您想选择
在package.json中,您将定义根命令(例如:
NPM上的"Christian Git"包使用以下方法:https://github.com/alexmarthur/Christian-Git
.gitconfig文件的pfa屏幕截图
具有以下别名
1 2 3 | [alias] cb = checkout branch pullb = pull main branch |