如何在git中混淆命令?
我看到了某个人的屏幕录像
git st git ci
上class。 当我这样做,我得到一个错误,问我是否意味着别的东西。
作为一个新手,我需要知道你要做什么来完成这个工作?
基本上你只需要添加行~/.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"
别名命令甚至接受函数作为参数。 看看别名 。
正如其他人所说,通过编辑~/.gitconfig
或使用git config --global alias.<alias> <git-command>
来添加git别名的方法是在你的全局.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,我会build议通过将git-completion.bash
复制到你的主目录并从你的~/.bashrc
它来设置bash完成。 (我相信我从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别名。
最后,为了真正减less击键次数,我在~/.bash_aliases
文件中join了以下内容: ~/.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'
我觉得最有用的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
你需要git config alias
命令。 在Git仓库中执行以下操作:
git config alias.ci commit
对于全球别名:
git config --global alias.ci commit
这将为status
创build一个别名st
:
git config --add alias.st status
这对我工作:
bco = "!f(){ git branch ${1} && git checkout ${1}; };f"
上:
$ git --version git version 1.7.7.5 (Apple Git-26)
Follwing是4个git快捷键或别名youc用于节省时间。
打开命令行并在下面的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
现在testing他们!
$ 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和non-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 ...
$ git update git:'update'不是一个git命令。 见'git --help'。 你的意思是? 更新-REF $ git config --global alias.update'pull -v' $ git update 从git://git.kernel.org/pub/scm/git/git = [最新] html - > origin / html = [最新date] maint - > origin / maint = [最新]男人 - >出身/男人 = [最新]主 - >原点/主 = [最新]下一个 - >原点/下一个 = [最新] pu - > origin / pu = [最新]待办事项 - >起源/待办事项 已经是最新的。
这里给出了别名 。即使这里有很好的答案,我添加了这个,因为它在Windows和Linux不同
为了让别名比其他答案中提到的标准gitconfiguration方式更短,我创build了一个npm包mingit ( npm install -g mingit
),这样大多数命令将变成2个字符而不是2个字符。 这里是例子:
ga . // git add . gb other-branch // git branch other-branch gc "made some changes" // git commit -m "made some changes" g co master // git checkout master gd // git diff gf // git fetch gi // git init gm hotfix // git merge hotfix g pll // git pull g psh // git push gs // git status
和其他命令会类似的短。 这也保持bash完成。 该软件包为你的点文件添加一个bash函数,在osx,linux和windows上运行。 另外,不像别的别名,它将别名git
– > g
以及第二个参数。
如果您使用“!”,您也可以链接命令 运算符产生一个shell:
aa = !git add -A && git status
这将同时添加所有文件,并给你$ git aa
的状态报告。
要方便地检查别名,请添加以下别名:
alias = config --get-regexp ^alias\\.
然后,一个快速的$ git alias
给你你目前的别名,他们做什么。
对于那些希望在git别名中执行shell命令的人 ,例如:
$ git pof
在我的terminal会推动当前分支到我的原点回购:
[alias] pof = !git push origin -f $(git branch | grep \\* | cut -d ' ' -f2)
哪里
$(git branch | grep \\* | cut -d ' ' -f2)
命令返回当前分支。
所以这是手动键入分支名称的一个快捷方式:
git push origin -f <current-branch>
Windows的另一种可能性是有一个目录充满.bat文件,其中有你的快捷方式。 文件的名称是要使用的快捷方式。 只需将该目录添加到PATH环境variables中,并在cmd窗口中拥有所有处理的快捷方式。
例如(gc.bat):
git commit -m %1
然后您可以在控制台中执行以下命令:
gc "changed stuff"
我join这个答案的原因是因为当使用这个时,你不仅限于git ...
only命令。
如果你需要一个~/.gitconfig
选项的替代方法,并打开一个更多的挖掘,另一个select是编写完全自定义的git命令,通过包装在一个全局的节点包。
在你的package.json中,你需要定义root命令(例如: gt
),然后过滤特定的命令来执行正确的git命令。 例如, git checkout my-branch
可能是gt co mybranch
。
npm上的“christian-git”包使用这个方法: https : //github.com/alexmacarthur/christian-git